[英]angular update property on change of another property
我有一個如下所示的數組
var testData = {
section1: [{
Number1: 0
}],
Total: 0
}
在上面的數組中,我可以將多個ui元素綁定到數字作為文本框。 我想更改每個文本框值以更新testData上的“Total”。
例:
如果我有3個文本框綁定到Number1,值為10,20,30,則總值應為60,即10 + 20 + 30。
我嘗試使用$ scope。$ watch,我不知道如何在數組中查看列表數組。
請幫忙。
嘗試使用:
<input type="text" ng-change="updateTotal ()" />
在您的控制器中,定義updateTotal以計算新的總計。
官方文檔: https : //docs.angularjs.org/api/ng/directive/ngChange
您可以創建一個函數來計算總數並顯示該值。 AngularJS 1.x“雙重綁定”將完成其余的工作。
var myApp = angular.module('myApp',[]); myApp.controller('MyCtrl', ['$scope', function($scope) { // added more data for demonstration $scope.testData = { section1: [{ Number1: 0 }, { Number1: 0 }, { Number1: 0 }], Total: 0 }; $scope.trackTotal = function() { var total = 0; // I tried using reduce but didn't work, still figuring why for (var i = 0; i < $scope.testData.section1.length; i++) { total += Number($scope.testData.section1[i].Number1); } // keeping the object property updated $scope.testData.Total = total; console.log($scope.testData.Total); return total; }; }]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="myApp" ng-controller="MyCtrl"> <ul ng-repeat="data in testData.section1"> <li> Number1[{{$index}}] <input type="text" ng-model="data.Number1"> </li> </ul> <p>{{trackTotal()}}</p> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.