1
這是一個虛構的例子,我有一個包含多個表單的巨大模板,我想標記已經觸及輸入的部分。在指令中獲取元素的ng模型值
<section my-directive>
<form name="user">
<input type="text" ng-model="someCtrlAlias.data.firstname">
<input type="text" ng-model="someCtrlAlias.data.lastname">
</form>
</section>
<section my-directive>
<form name="address">
<input type="text" ng-model="someCtrlAlias.data.street">
<input type="text" ng-model="someCtrlAlias.data.zipcode">
</form>
</section>
我想檢查每個輸入字段,如果它已被觸摸。基本上,$ dirty有什麼作用,但問題是用戶可以保存並稍後繼續,因此$ dirty會消失。我不想將子表單分成data1.firstname,data2.street,因爲之後我需要在將它們保存到數據庫時刪除這些字段。
我已經試過這樣:
angular.forEach element.find('input'), (input) ->
$input = angular.element(input)
name = $input.attr('name')
console.log name, "=>", $input.attr('ng-model')
但$input.attr('ng-model')
只是表明我的分配模型的名稱。我可以將整個Object傳遞給指令並從那裏訪問屬性,例如myModel[$input.attr('ng-model').replace("myController.", "")]
但這似乎效率低下。
什麼是您的指令包含哪些內容?由於它在'form'元素上,因此它可以訪問['FormController'](https://docs.angularjs.org/api/ng/type/form.FormController),它有'$ setDirty()方法「 '和'$ setPristine()'。你也可以通過使用form [inputName]來獲得它的元素的ng模型。 –