0
我試圖動態編譯並在指令中添加一個指令和動態屬性;但是,我不斷收到錯誤。在循環內動態生成角度指令
任何人都知道爲什麼?
http://plnkr.co/edit/wOb9UuFwXR0dCZx2e2xg?p=preview
angular.module('plunker', [])
.controller('MainCtrl', function($scope) {
var vm = this;
vm.foo = {
bar: 'world'
};
}).directive('addEditConfig', AddEditConfig)
.directive('inputElement', InputElement);
function AddEditConfig($compile) {
var directive = {
restrict: 'E',
scope: {
edit: '@',
config: '=',
display: '=',
parentController: '='
},
template: '<div id="dynamicForm"></div>',
controllerAs: 'vm',
bindToController: true,
controller: AddEditConfigController,
link: linkFunction
}
return directive;
function linkFunction(scope, element, attr, ctrl) {
var params = [{description: 'foo', value:'bar'}, {description: 'foo', value:'bar'}, {description: 'foo', value:'bar'}, {description: 'foo', value:'bar'}];
for (var i = 0; i < params.length; i++) {
angular.element(document.getElementById('dynamicForm')).append($compile('<input-element param="' + params[i] + '"></input-element>')(scope));
}
}
};
function AddEditConfigController() {
};
function InputElement() {
var directive = {
restrict: 'E',
scope: {
param: '='
},
controllerAs: 'vm',
bindToController: true,
template: '<div class="form-group"> <div class="col-md-8"> <input id="port" name="textinput" type="text" placeholder="{{vm.param.description}}" class="form-control input-md" ng-model="vm.param.value"/> </div></div>',
controller: InputElementController,
link: linkFunction
}
return directive;
function linkFunction(scope, el, attr, ctrl) {
}
};
function InputElementController() {
var vm = this;
}
我想我可能得到它想通了:爲實現這一
一種方式http://plnkr.co/edit/m6zL2ziidu9NnWZpiHOO?p=preview 哪種方式你認爲會被認爲是「最佳實踐」嗎?我不太喜歡ng-repeats,因爲我無法調試他們。 :( – Deo
'$ compile(' input-element>')'是一個很好的例子,我只是覺得'ng-repeat'會讓你的代碼那麼爲什麼重新發明輪子?順便說一句:這個問題證明你的實現不容易調試,呵呵;) –
如果你知道調試html邏輯的方法,真的很想了解它。 :) – Deo