我正在尝试在所有具有“名称”属性的元素和指令中添加属性 ng-model,但是由于某种原因,当我使用链接函数的 transclude 函数时,指令会删除我的 ng-model添加然后角度向我抛出错误:
Error: [$compile:ctreq] Controller 'ngModel', required by directive 'someDirectiveThatRequiresNgModel', can't be found!
当我在我的 chrome 开发人员工具中看到 DOM 时,在我使用以下代码添加它之后,ng-model 被删除(从指令元素中删除,但不是从简单输入元素中删除):
compile: function(element, attrs){
return {
pre: function ($scope, $element, $attrs, ctrl, transclude) {
},
post: function($scope, $element, $attrs, ctrl, transclude){
var initializePromise = $scope.__initialize();
initializePromise.then(function(){
transclude($scope, function (clone, scope) {
var inputs = clone.find('[name]');
$.each(inputs, function (index, input) {
var ainput = angular.element(input);
ainput.attr('ng-model', 'someValidScopeAttribute');
$compile(ainput)($scope);
});
$element.prepend(clone);
});
});
}
}
},
为什么在 Transclude 函数中编译指令时删除属性?,我怎样才能实现我需要的?