我对我想要编写的指令有疑问。这是jsfiddle 这是 HTML
<div ng-controller="TestCtrl">
<mydir base="{{absolute}}">
<div>{{path1}}</div>
<div>{{path2}}</div>
</mydir>
</div>
该指令称为“mydir”,需要基本属性的值和所有路径值(可以定义任意数量的路径)。我不想将 Controller 中的值直接注入(inject)指令范围(它们需要是独立的)。我对此有 3 个问题(也请查看 jsfiddle!)
1) 尽管代码按现在的方式工作,但出现错误:“TypeError: Object # has no method 'setAttribute'”。有什么建议吗?
2) 指令scope.base 中的“undefined”而不是“/base/”。这个问题可以解决吗?
3) 如何制作指令中所有路径值的列表?
最佳答案
您需要设置一个隔离范围来声明该指令的基本属性:
scope: {
base: "@"
}
这解决了 (2)。
问题(1)是由 replace: true
引起的与scope
合作上面,因为它创建了一个注释节点来包含重复的 <div>
s。
对于 (3),添加 paths: "="
范围,当然,将它们作为数组从父 Controller 传递。
参见 fork fiddle :http://jsfiddle.net/swYAZ/1/
关于javascript - AngularJs:创建指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18850036/