将对象从父控制器传递到隔离范围子指令

Fra*_*isc 7 angularjs

我有一个对象,我想在一个指令内观察.
该指令具有隔离范围,对象来自父控制器.

DOM:
<div hello-directive obj-to-track="{{myObj}}"></div>

指令JS:

scope:{
   objToTrack:'@'
},
link:function(scope,element,attrs){
   scope.$watch(function(newValue){
      //Inside here, newValue is a JSON string
      //So is scope.objToTrack
   });
}
Run Code Online (Sandbox Code Playgroud)

无论如何,除了JSON.parse()
谢谢之外,还有来自父控制器的实际对象.

Nik*_*los 8

只需使用"="绑定:

scope:{
    objToTrack: "="
}
Run Code Online (Sandbox Code Playgroud)

像往常一样观看:

scope.$watch("objToTrack", function(newval, oldval) {
    ...
});
Run Code Online (Sandbox Code Playgroud)

用它作为:

<div hello-directive obj-to-track="myObj"></div>
Run Code Online (Sandbox Code Playgroud)

  • 我知道,但这可以实现双向绑定.这不是一个*巨大的*问题,但我宁愿不让指令能够写入它,如果可能的话.如果不可能,那就必须这样做. (3认同)