在我的指令中,我从元素attr(ng-repeat)获取属性并使用directive
内部范围,如下所示:
<program-name name="{{appName.title}}" percent="{{appName.percent}}" company="{{appName.company}}" data-page="Home" index="{{$index}}" ng-repeat="appName in appNames"></program-name>
并在指令中:
scope: {
name: '@',
index: '@',
percent: '@',
company: '@'
},
工作正常。但如果我需要从对象获取我的所有属性,这只是一种方式吗?假设我的appName
对象中有20个peroperties,那么它是否需要通过所有这20个?
有没有办法将所有这些属性作为对象直接从元素到范围?
如果是的话,怎么做?
这里是fiddle
答案 0 :(得分:5)
你可以给你的指令appName对象
<强> JS 强>
scope: {
appName: '='
},
<强> HTML 强>
<program-name app-name="appName" ng-repeat="appName in appNames"></program-name>
答案 1 :(得分:4)
有没有办法直接从所有这些属性作为对象 范围的要素?
是的,您可以在指令的隔离范围内使用=
运算符。这也将确保双向绑定。
scope:{
appName: '='
}
另外,请注意,如果您想在指令中使用appName的所有属性,那么不要创建一个隔离的范围。如果你没有指定scope:{}
那么指令将采用与它所使用的模板相同的范围!