我有一個在運行時動態創建輸入元素的模板。我想將輸入到此輸入元素的數據捕獲到我的模型中。我正在嘗試使用ng-model來實現這一點。但是,它不工作。在檢查元素時,我發現正確的表達式已被綁定到ng-model,但它沒有更新我的模型。這裏是我的代碼:在動態創建的元素上使用ng-model
模板:
<div child-ng-model="userReg.candidateData.PrimarySkills">
<!-- this div creates an input element on runtime -->
</div>
指令:
(function (window) {
'use strict';
angular.module('myApp.userRegistration.directive')
.directive('childNgModel', ['$compile', function ($compile) {
return {
restrict: 'A',
scope: {
childNgModel: '@'
},
link: function (scope, element, attrs) {
var el = element.children().eq(0);
el.attr('ng-model', scope.childNgModel);
$compile(el)(scope);
}
}
}]);
})(window);
文字我輸入字段中沒有被我的模型捕獲(userReg.candidateData.PrimarySkills)。這是爲什麼發生?我在這裏做錯了什麼?
感謝。還有一個次要的不相關的問題:)當我console.log我的candidateData對象,我沒有看到在鉻開發工具窗口中的所有屬性。一些屬性在最後被「...」剪切。即使在單擊展開對象的箭頭後,我也看不到所有屬性。有任何解決這個問題的方法嗎?這裏是鏈接:https://s18.postimg.org/4bv9c1r7d/Untitled2。png – maverick
@ dk49這使指令直接依賴於控制器,是不好的做法。 (https://docs.angularjs.org/guide/directive#creating-a-directive-that-manipulates-the-dom請參閱本段上面的綠色註釋) – gyc
@gyc沒有依賴關係。模型的(名稱)被傳遞給指令,因此該指令可以用於任何控制器。 – zeroflagL