创建绑定到AngularJS中其他输入的计算值数组

时间:2013-12-13 14:36:20

标签: javascript angularjs

我有两组输入,每组都绑定到数组中的值。每个阵列都会创建网格的边缘,网格的交叉点将代表定义交叉点的两个输入的一些计算。假设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] ......

有什么想法吗?

1 个答案:

答案 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);
    };