我有两组输入,每组都绑定到数组中的值。每个阵列都会创建网格的边缘,网格的交叉点将代表定义交叉点的两个输入的一些计算。假设aArr是行,bArr是列。
$scope.aArr = [{val: 1},{val: 1},{val: 1}];
$scope.bArr = [{val: 1},{val: 1},{val: 1}];
我可以创建一个交叉点数组,每当每个定义值更新时,每个交集都会更新,然后使用带有ng-repeat的数组来创建标记吗?
像
这样的东西$scope.intersections = [{val: $scope.aArr[0].val + $scope.bArr[0]}...]
给了我不更新的交叉点,每当我尝试将interection [n] .val定义为函数时,我都会出错。
似乎我可以定义
$scope.intersections = [
[function(){return $scope.aArr[0] + $scope.bArr[0]}, function(){return $scope.aArr[0] + $scope.bArr[1]} ... ],
[...],
[...]
];
但我无法定义一个空数组,然后以编程方式填充它。 Firebug抛出的东西看起来像Error:[$interpolate:interr]
......
有什么想法吗?
答案 0 :(得分:3)
如果想要在对象或对象值发生变化时进行某些计算,请使用WATCH
函数。
看一下这个小提琴的例子: http://jsfiddle.net/imhassan66/x6QaY/
在这个例子中,我添加了两个数组的第一个值。如果您更改这些值,则会更新SUM
。
app.controller('MainCtrl', function ($scope) {
$scope.aArr = [{
val: 1
}, {
val: 2
}];
$scope.bArr = [{
val: 3
}, {
val: 43
}];
$scope.$watch("aArr", function () {
$scope.doWorkInArrayChange();
}, true);
$scope.$watch("bArr", function () {
$scope.doWorkInArrayChange();
}, true);
$scope.sum = "";
$scope.doWorkInArrayChange = function () {
$scope.sum = parseInt($scope.aArr[0].val) + parseInt($scope.bArr[0].val);
};