如何观看对象属性?

时间:2013-10-06 23:34:16

标签: angularjs angularjs-directive

我希望有一个可以像这样使用的属性指令:

<div my-dir="{items:m.items, type:'0'}"></div>

在我的指令中,我可以把它变成像这样的对象:

function (scope, element, attributes, modelController)
{
   var ops = $.extend({}, scope.$eval(attributes.myDir));
}

现在说m.items是一个数组。在某个地方,一个ajax调用用一个新的替换数组。我想留意这个。

如何查看m.items或属性中为items属性键入的内容?表达式应该是什么?

2 个答案:

答案 0 :(得分:6)

你应该能够使用范围。$ watch来观察属性。当任何值发生变化时,Angular将调用整个对象的回调。

function(scope, elem, attrs) {
  scope.$watch(attrs.myDir, function(val) {
    // Do something with the new value, val.
  }, true);
}

http://plnkr.co/edit/JBGqW8uFzh1eJ1Ppq3fT

只要模型发生变化(通过在输入中输入内容),指令就会更新$ watch中的元素html。

编辑我的回答:你想要包含true作为比较对象值而不是引用的最后一个参数。否则你将运行digest超过10次并获得异常。

答案 1 :(得分:1)

scope.$watchCollection (watchExpression, listener)

请参阅:https://docs.angularjs.org/guide/scope