2013-05-11 59 views
0

我試圖生成屬性名稱如下:angularjs屬性名稱不編譯

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或類似號碼才能看到生成屬性名稱。

感謝您的幫助

回答

1

問題在於您的指令定義。當我看着你的指令定義時,範圍屬性定義爲對象散列會創建一個新的隔離範圍。按照指令documentation

{}(object hash) - 然後創建一個新的'isolate'作用域。 「分離」範圍與正常範圍不同,因爲 原型從父範圍繼承。這在 創建可重用組件(不應該意外讀取)或 修改父範圍中的數據時非常有用。

因爲在你的情況下,你使用的是對象散列,爲不從父範圍繼承的html元素創建一個新的範圍。

我創建了一個新的小提琴,它通過在父範圍屬性和指令隔離範圍屬性之間創建2路綁定來解決此問題。請參閱這裏行動小提琴http://jsfiddle.net/FhM2c/2/

小提琴的一些相關部分是

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

和指令

scope : { 
      fileHandler : '=', 
      myId:'=file' 
     }, 
+0

非常感謝這個答案。 現在看起來很明顯,但我無法找到 – codename44 2013-05-11 13:53:52