我必须在angularjs指令中动态创建一个选择列表。我有双引号ng-init和ng-options,使用angular.element创建元素并附加到id 预览的div。代码如下所示
$('button').click(function() {
var ng_select_str = '<div class="col-sm-8" ng-init="options=[1,2,3]">' +
'<select class="form-control" id="inventory-qq" ng-model="inventory.qq" ng-options="opt as opt for opt in options"></select>' +
'</div>';
var element = angular.element(ng_select_str);
$('#preview').append(element);
});
然而,选择列表呈现时没有任何选项值(空选择列表)。我想知道如何解决这个问题。
答案 0 :(得分:2)
最好有这样的逻辑指令,你可以在其中生成和编译动态内容。
请参阅下面的简单示例,但需要更多工作
var module = angular.module('testApp', [])
.directive('test', function($compile) {
return {
restrict: 'E',
replace: true,
template: '<button ng-click="appendSelectBox()">add select box</button>',
controller: function($scope, $element) {
$scope.appendSelectBox = function() {
var el = $compile('<div class="col-sm-8" ng-init="options=[1,2,3]"><select class="form-control" id="inventory-qq" ng-model="inventory.qq" ng-options="opt as opt for opt in options"></select></div>')($scope);
$element.parent().append(el);
};
}
};
});
module.controller('crtl', function($scope) {})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="testApp" ng-controller="crtl">
<test>text</test>
</div>
答案 1 :(得分:0)
您需要编译元素。
var elm = angular.element(ng_select_str);
elm = $compile(elm)(scope);
$('#preview').append(elm);
您的指令应如下所示:
var module = angular.module('app', []);
module.directive('myWidget',
['$compile'
function($compile) {
return {
restrict: 'AE',
link: function(scope, element, attrs) {
var elm = angular.element(ng_select_str);
elm = $compile(elm)(scope);
$('#preview').append(elm);
}
};
}
]);