javascript - 将模型属性直接绑定(bind)到 AngularJS 中另一个模型的计算属性?

标签 javascript angularjs

我刚开始用 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}
    ];

}

假设 subModel1subModel2 的结果是它们项值的总和。

因此,subModel1 的总和为 4,subModel2 的总和为 10。

如何以编程方式将 mainModel[0].sum 绑定(bind)到 subModel1 以及 subModel2 的总和?

更新:刚刚找到 AngularJS Fundamentals in 60-ish Minutes通过 Dan Wahlin .一个漂亮的介绍,着重于核心概念。

最佳答案

如果你只需要 View 中的值,你可以在 $scope 上定义一个函数:

$scope.mainSum = function() {
    return $scope.subModel1[0].value + $scope.subModel2[0].value;
}

然后在你的 View 中使用它:

<div>main sum = {{mainSum()}}</div>

如果您需要更新mainModel,请按照@Tim 已经在评论中建议的方式进行操作——使用$watch es 在你的 Controller 中:

$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;
});

关于javascript - 将模型属性直接绑定(bind)到 AngularJS 中另一个模型的计算属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16253094/

相关文章:

JavaScript 动画

javascript - Safari/Chrome 在通过 Javascript 更改时不发布值

javascript - AngularJS Controller 内的数组未初始化

javascript - 在 angularjs 自定义指令中创建一个 canvas 元素

javascript - YouTube API key 安全 - 我应该有多担心?

javascript - 简单的 react 过滤

javascript - CSS 突出显示选定的按钮

javascript - Jquery动画循环

angularjs - angularjs 和dust.js 有什么区别?

javascript - 如何将背景图像作为上标应用于 HTML 元素