是否有一个解决方案,以获得对象直接到指令范围

Is there a workaround to get the object directly to directive scope?

本文关键字:指令 范围 对象 解决方案 有一个 是否      更新时间:2023-09-26

在我的指令中,我从元素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个属性,那么它需要像这样传递所有20个属性吗?

是否有任何方法可以直接从元素到作用域获得所有这些属性作为对象?

如果有,怎么做?

here is fiddle

你可以直接给你的指令指定appName对象

JS

scope: {
         appName: '='
       },

<program-name app-name="appName" ng-repeat="appName in appNames"></program-name>

是否有办法直接从要确定作用域的元素?

是的,你可以在指令的隔离作用域中使用=操作符。这也将确保双向绑定。

scope:{
       appName: '='
      }

另外,请注意,如果你想要appName中的所有属性在你的指令中,那么不要创建一个孤立的作用域。如果你不指定scope:{},那么指令将采用与模板相同的作用域。