我是AngularJS的新手,当ng-repeat
嵌入到如下指令中时,我无法使其工作
<settings-widget>
<ul class="ul-border">
<li class="box" ng-repeat="item in list">{{item}}</li>
</ul>
</settings-widget>
app.directive("settingsWidget", function ($compile, $timeout) {
return {
restrict: "E",
replace: "true",
scope: { },
transclude: true,
templateUrl: "/Settings.html",
compile: function (element, attrs, transclude) {
return function (scope) {
transclude(scope, function (clone) {
var html = angular.element("<div>").append(clone).html();
scope.template = html;
});
};
},
controller: ['$scope', '$element', '$attrs', '$rootScope', function ($scope, $element, $attrs, $rootScope) {
$scope.list = ['item1', 'item2'];
}]
};
});
Settings.html
<div>
<form id="settingsForm" name="settingsForm" novalidate ng-submit="save(settingsForm)" ng-model-options="{ allowInvalid: true}">
<div compile="{{template}}"></div>
</form>
</div>
由于某种原因,当我运行我的应用程序<li>
标签没有被创建。
有人能帮帮我吗?
1条答案
按热度按时间kmynzznz1#
**1.普通转换(传递的html使用父作用域):**在父控制器中定义
list
!2.无转换(传递的html使用指令作用域):
**2. Transclution+(传递的html要同时使用指令和父作用域):**这个看起来很棘手,我实际上从来没有这样做过,我想很简单的方法是使用
$parent
ref,因为你没有这个compile
手动调用: