javascript - 将 $watch 附加到 dict 列表内的变量

标签 javascript angularjs

我想在订单上附加 watch 。我不知道如何将监视添加到字典列表内的变量。 内部 Controller ,

cart_list = [{'order':'single'},{'order':'single'},{'order':'twice'}];

for (var i = 0; i < $scope.cart_list.length; i++) {
    $scope.$watch('cart_list[i].order', function() {
        console.log("Inside watch");
        if($scope.cart_list[i].order=='single'){
            console.log("with single order");
        }
    }
}

这给了我错误,

TypeError: Cannot read property 'order' of undefined

最佳答案

我能想到的让这个 watch 工作的唯一方法是在 watch 中使用函数表达式。代码变成这样

for (var i = 0; i < $scope.cart_list.length; i++) {
    setupWatch($scope.cart_list[i]);
}

function setupWatch(item) {
   $scope.$watch(function () {
            return item
        }, function (newValue, oldValue) {
            console.log("Inside watch");
            if (newValue.order == 'single') {
                console.log("with single order");
            }
        }, true);
}

我还没有尝试过,但我认为这应该可行。

此外,我还添加了严格的对象相等性作为最后一个参数。

关于javascript - 将 $watch 附加到 dict 列表内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29916719/

相关文章:

html - 删除按钮未检测到第一个列表项

angularjs - GET 请求在本地工作,在测试服务器上返回 HTTP 406

javascript - AngularJs:将搜索条件从非常大的搜索表单传递到服务 - 创建自定义模型?

asp.net-mvc - 带有 AngularJS 的 ASP.NET MVC 验证表单

javascript - 如何将数据值从服务传递到 Controller

javascript - 如何防止在数组中打印当前值(除了其他值)

javascript - 如何在没有声明文件的情况下从其他js文件扩展类

javascript - 如果在循环中运行,匿名函数会占用内存吗

javascript - Internet Explorer 在 getElementById 上抛出错误

javascript - React babel loader - 你可能需要一个合适的加载器来处理这种文件类型