0

我正在尝试生成这样的属性名称:

name="id{{myScopeId}}"

这在大多数情况下都非常有效,但是当我对已经有自定义指令的元素执行此操作时,它不再起作用,结果只是“id”。

此自定义指令适用于文件输入元素并处理文件名。

这将起作用,结果是

name="file5" : <input name="file{{myId}}" type="file" />

这不起作用,结果是

name="file" : <input name="file{{myId}}" type="file" file-handler="fileName" />

这是带有示例的 jsfiddle:http: //jsfiddle.net/gubrb/1/

您需要firebug或类似的东西才能看到生成的属性名称。

谢谢你的帮助

4

1 回答 1

1

问题在于您的指令定义。当我查看您的指令定义时,将范围属性定义为对象哈希创建了一个新的隔离范围。根据指令文档

{}(对象哈希) - 然后创建一个新的“隔离”范围。“隔离”作用域与普通作用域的不同之处在于它在原型上并不从父作用域继承。这在创建可重用组件时很有用,这些组件不应意外读取或修改父范围内的数据。

由于在您的情况下您使用的是对象哈希,因此会为不从父范围继承的 html 元素创建一个新范围。

我创建了一个新的小提琴,通过在父作用域属性和指令隔离作用域属性之间创建 2 路绑定来解决这个问题。在这里查看小提琴http://jsfiddle.net/FhM2c/2/

小提琴的一些相关部分是

 <input name="file{{myId}}" type="file" file-handler="fileName" file="myId"/><br />

和指令

 scope : {
            fileHandler : '=',
            myId:'=file'
        },
于 2013-05-11T13:43:53.890 回答