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

Create an array of computed values that are bound to other inputs in AngularJS

本文关键字:数组 AngularJS 绑定 输入 其他 一个 计算 创建      更新时间:2023-09-26

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

给了我不会更新的交集,每当我试图将intersection[n].val定义为函数时,我都会出错。

编辑

似乎我可以定义

$scope.intersections = [
  [function(){return $scope.aArr[0] + $scope.bArr[0]}, function(){return $scope.aArr[0] +         $scope.bArr[1]} ... ],
  [...],
  [...]
];

但我不能定义一个空数组,然后用程序填充它。Firebug抛出类似Error:[$interpolate:interr]的东西。。。

有什么想法吗?

如果要在对象或对象值发生更改时进行一些计算,请使用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);
    };