我有一個用AngularJS編寫的自定義表單應用程序,現在我需要使用模板中表單的數據。但我沒有試過似乎工作。如何在AngularJS的模板中使用動態生成的值
我創造這樣一個自定義的指令......
.directive('dynamicModel', ['$compile', function ($compile) {
return {
'link': function(scope, element, attrs) {
scope.$watch(attrs.dynamicModel, function(dynamicModel) {
if (attrs.ngModel == dynamicModel || !dynamicModel) return;
element.attr('ng-model', dynamicModel);
if (dynamicModel == '') {
element.removeAttr('ng-model');
}
// Unbind all previous event handlers, this is
// necessary to remove previously linked models.
element.unbind();
$compile(element)(scope);
});
}
};
}])
這是連接到像這樣的表單元素..
<div class="row" ng-repeat="field in customForm.fields">
<label>{{field.displayname}}
<input class="form-control" type="{{field.type}}" name={{field.variable}} dynamic-model="field.databind" placeholder="{{field.variable}}" required="{{field.isRequired}}"></label></div>
這部分的偉大工程,該領域目前是2方式綁定到輸入表單。 但是,當我後來嘗試使用相同的方法來顯示從表單計算的報表中的值時,我會得到「field.databind」或至多解析的數據綁定字段名稱,如「currentUser.name」而不是值,例如「devlux」
我已經試過
<div class="row" ng-repeat="field in customForm.fields">
<p>{{field.name}} = {{field.databind}}</p>
Also
<p dynamicModel="field.databind"></p>
</div>
沒有什麼工作,除非我把它改成一個input元素,這不是我想在這裏做。
動態模型代碼已經被別人解答了關於創建動態表單元素的問題,老實說,我認爲這只是我理解的一個步驟。但假設「field.databind」將始終是一個包含inscope模型名稱的字符串文字,我怎樣才能在普通模板中訪問它?
任何這運氣? – tasseKATT 2015-02-11 09:18:27
是的,道歉我不知道我需要正式「接受」答案。我在這裏是一個總noob。 tasseKATT的回答是正確的,並且工作完美無瑕。 – Devlux 2015-02-14 08:08:02
這很好:)總是最好接受你找到的答案是正確的,所以這個問題不會留下「未解決」的問題。如果答案不適合你,最好在下面留下評論,讓作者知道。這就是爲什麼我要問,跟進:) – tasseKATT 2015-02-14 09:01:17