2015-06-05 2 views
0

Я использую xeditable для редактирования строки таблицы в угловых js. Ниже приведен код HTML.добавить часы для редактируемой строки в angularjs

<tr ng-repeat="expense in viewModel.expenses"> 
<td>{{expense.eid}}</td> 
<td><span editable-text="expense.billAmt" e-ng-model="editForm.billAmt" e-name="billAmt" e-form="rowform">{{expense.billAmt}}</span></td> 
<td><span ng-show="!rowform.$visible">{{expense.split}}</span><input type="text" ng-show="rowform.$visible" class="form-control input-sm" e-ng-model="editForm.split" ng-disabled="true" /></td>  

Я хочу, чтобы обновить «расколоть» значение в последнем столбце, когда значение в изменении «billAmt». Поэтому я добавляю часы в angularjs, но не обновляюсь.

$scope.$watch('editForm.billAmt',function(newValue,oldValue) { 
    $scope.editForm.split=newValue/$scope.viewModel.members.length; 
}); 

Есть ли другой способ добавить часы при использовании xeditable ?? Как я могу это решить?

+0

Попробуйте применить $ scope. $ Apply(); после обновления значения editForm.split – Hurix

+1

@Hurix, что нужно для запуска цикла дайджеста..а уже запущено после завершения функции часов? –

ответ

0

Я бы воздержался от использования $scope.$watch() и обратился к более эффективному решению. Вы можете использовать директиву e-ng-change для запуска функции, вычисляющей новое значение $scope.editForm.split при каждом изменении значения billAmt. Это будет выглядеть следующим образом:

<tr ng-repeat="expense in viewModel.expenses"> 
<td>{{expense.eid}}</td> 
<td><span editable-text="expense.billAmt" e-ng-model="editForm.billAmt" e-name="billAmt" e-form="rowform" e-ng-change="checkSplit();">{{expense.billAmt}}</span></td> 
<td><span ng-show="!rowform.$visible">{{expense.split}}</span><input type="text" ng-show="rowform.$visible" class="form-control input-sm" e-ng-model="editForm.split" ng-disabled="true" /></td> 

И в контроллере функции добавления checkSplit():

$scope.checkSplit = function(){ 
    $scope.editForm.split = $scope.editForm.billAmt/$scope.viewModel.members.length; 
} 

checkSplit() функция вызывается явно в ответ на событие изменения значения, в то время как $scope.$watch() обработчик работает на каждом цикл дайджест, так что вы можете технически сэкономить и некоторую производительность.

+0

'$ scope.editForm = {}; \t \t $ scope.updateSplit = функция() { \t \t console.log ($ scope.editForm.billAmt); \t \t console.log ($ scope.editForm.split); \t \t $ scope.editForm.split = $ scope.editForm.billAmt/$ scope.viewModel.members.length; \t \t console.log ($ scope.editForm.split); \t} 'Но значения не определены. – Azeeb

+0

@Azeeb Все они? – MarcinPraski

+0

Теперь я могу получить значения с помощью кода '$ scope.updateSplit = function (self) { \t \t $ scope.editForm.split = self. $ Data/$ scope.viewModel.members.length; \t \t //console.log($scope.editForm.split); \t} 'Но значение split не обновляется. – Azeeb

Смежные вопросы