試試我的自定義指令:
myApp.directive("dynamicName",function($compile){
return {
restrict:"A",
terminal:true,
priority:1000,
link:function(scope,element,attrs){
element.attr('name', scope.$eval(attrs.dynamicName));
element.removeAttr("dynamic-name");
$compile(element)(scope);
}
};
});
使用它:
<input dynamic-name="field.name"
type="{{ field.type }}"
placeholder="{{ field.name }}"
ng-model="field.value"
required>
DEMO
問題的說明:
默認情況下,使用ngModelController輸入元素(ng-model
)調用FormController.$addControl
當它們與自身註冊並暴露在FormController
屬性與輸入的name屬性在這種情況下爲{{ field.name }}
。因此,即使控制已註冊,但你沒有暴露在FormController
性質名爲email
,firstName
,你只有{{ field.name }}
引用最後一個輸入項
解決方案的說明:
在此解決方案中,我創建了一個自定義僞指令,以便在運行時用正確的名稱替換{{ field.name }}
。
我爲什麼要使用terminal:true,
和priority:1000
,看看這個討論的更多信息:Add directives from directive in AngularJS
請,發展。爲什麼你會爲angularJS每秒鐘後悔? – Ant
這就是你要找的http://stackoverflow.com/questions/27071413/dynamic-form-name-attribute-input-type-text-name-variable-name-in – SoEzPz