是否有解决方法将对象直接转换为指令范围?

时间:2015-06-11 05:35:39

标签: javascript jquery angularjs

在我的指令中,我从元素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

2 个答案:

答案 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:{}那么指令将采用与它所使用的模板相同的范围!