我想生成一个像这样的属性名:
name="id{{myScopeId}}"
这在大多数情况下都能很好地工作,但是当我在一个已经有自定义指令的元素上这样做时,它就不再工作了,结果只有"id"。
这个自定义指令应用于文件输入元素,并处理文件名。
这将工作,结果是
name="file5" : <input name="file{{myId}}" type="file" />
这行不通,结果是
name="file" : <input name="file{{myId}}" type="file" file-handler="fileName" />
下面是jsfiddle with示例:http://jsfiddle.net/gubrb/1/
您需要firebug
或类似的来查看生成的属性名称。
感谢您的帮助
问题在于您的指令定义。当我看你的指令定义时,范围属性作为对象哈希的定义创建了一个新的隔离范围。根据指令文档,
{}(对象散列)-然后创建一个新的'隔离'作用域。的"隔离"作用域与普通作用域的不同之处在于它没有原型通常继承自父作用域。这在以下情况下很有用创建可重用的组件,这些组件不应该意外读取或修改父作用域的数据
因为在你的情况下,你使用对象哈希,一个新的范围被创建的html元素,不继承父范围。
我创建了一个新的工具,通过在父作用域属性和指令隔离作用域属性之间创建一个双向绑定来解决这个问题。在这里查看提琴的实际操作http://jsfiddle.net/FhM2c/2/
小提琴的一些相关部分
<input name="file{{myId}}" type="file" file-handler="fileName" file="myId"/><br />
和指令
scope : {
fileHandler : '=',
myId:'=file'
},