【问题标题】:how to update elements containing relation如何更新包含关系的元素
【发布时间】:2013-08-22 14:51:08
【问题描述】:

我的范围如下

 $scope.phones = [
    {
        id: 4,
        name: "nokia",
        accessories: [
            {id: 1, name: "headset"},
            {id: 3, name: "keyboard"},
            {id: 5, name: "charger"}
        ]
    },
    {
        id: 5,
        name: "samsung",
        accessories: [
            {id: 5, name: "charger"}
        ]
    },
    {
        id: 6,
        name: "iphone",
        accessories: [
            {id: 1, name: "headset"},
            {id: 5, name: "charger"}
        ]
    }
];

例如它们的显示方式

-> Phone name
    -> accesories

现在是我的情况

如果我更新与手机相关的配件,我想更新显示的记录,但只更新与更新的配件相关的记录。我不想更新整个操作视图,而只想更新与更新的附件绑定的记录

我该怎么做?

// 编辑

我创建了一个手动解决方法

 $scope.editAcc = function (idx) {
            for(var i = 0; i < $scope.phones.length; i++) {
                var tmpPhone = $scope.phones[i];
                for(var j = 0; j < tmpPhone.accessories.length; j++) {
                    var acc = tmpPhone.accessories[j];
                    if(acc.id == idx) {
                        acc.name = acc.name + " Z";
                    }
                }
            }

// var acc = $scope.accessories[idx]; // acc.name = acc.name + "X"; };

但 IMO 应该有一些功能可以做到这一点

【问题讨论】:

    标签: angularjs partial-page-refresh


    【解决方案1】:

    我认为没有内置的方法可以通过 JSON 路径更新值,但您至少可以使用 angular.forEach() 循环遍历集合:

    $scope.editAcc = function (idx) {
        angular.forEach($scope.phones, function (t) {
            angular.forEach(t.accessories, function(acc){
                (acc.id == idx) ? (acc.name += " Z") : null;
            });
        });
    }
    

    DEMO

    【讨论】:

    • 有什么区别?循环是一个循环
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多