我刚刚开始使用AngularJS创建一个小项目。
由于结构原因,我想在几个子模型中分解我的模型,如下:
var myCtrl = function ($scope) {
$scope.mainModel = [
{modelTitle:'learn angular', sum:0},
{modelTitel:'build an angular app', sum:0}
];
$scope.subModel1 = [
{item:'learn angular', value:2},
{item:'build an angular app', value:2}
];
$scope.subModel2 = [
{item:'learn angular', value:5},
{item:'build an angular app', value:5}
];
}
假设subModel1
和subModel2
的结果必须是其商品价值的总和。
因此,subModel1
的总和为4,subModel2
的总和为10.
如何以编程方式将mainModel[0].sum
绑定到subModel1
的总和,同样为subModel2绑定?
更新:刚刚AngularJS Fundamentals in 60-ish Minutes找到了Dan Wahlin。一个美丽的介绍,专注于核心概念。
答案 0 :(得分:15)
如果您只需要视图中的值,则可以在$ scope上定义一个函数:
$scope.mainSum = function() {
return $scope.subModel1[0].value + $scope.subModel2[0].value;
}
然后在您的视图中使用它:
<div>main sum = {{mainSum()}}</div>
如果您需要更新mainModel
,请执行@Tim在评论中建议的内容 - 在您的控制器中使用$watch es:
$scope.$watch('subModel1[0].value', function(value) {
$scope.mainSum[0].sum = value + $scope.subModel2[0].value;
});
$scope.$watch('subModel2[0].value', function(value) {
$scope.mainSum[0].sum = $scope.subModel1[0].value + value;
});
或者你可以看一下总和:
$scope.$watch(function() {
return $scope.subModel1[0].value + $scope.subModel2[0].value;
}, function(value) {
$scope.mainSum[0].sum = value;
});