我是有角度的自定义指令的初学者。我只是使用自定义指令基于控制器作用域值呈现两个html模板。呈现html ng-click =“ myclick()”事件后,这两种模板均无法使用。
view.html
<div ng-controller = 'ctrl1'>
<div class="doc-list-wrapper" ></div>
</div>
<div ng-controller = 'ctrl2'>
<div class="doc-list-wrapper" ></div>
</div>
模板
<script type="text/ng-template" id="tmpl-doc-list-wrapper">
<ul>
<li ng-repeat="doc in docs" >
<a rel="external" ng-click="myclick()" >
<span >{{doc.stageName}}</span>
</a>
</li>
</ul>
</script>
模板渲染
app.run(function ($templateCache) {
$templateCache.put(
'tmpl-doc-list-wrapper', jQuery('#tmpl-doc-list-wrapper').html());
});
我的指令
app.directive('docListWrapper', ['$timeout', function ($timeout) {
return {
restrict: 'C',
priority: 500,
replace: true,
templateUrl: 'tmpl-doc-list-wrapper',
scope: { docs: '=docs'},
link: function (scope, element, attrs) {
}
};
}])
控制器
app.controller('ctrl1', function ($scope, $interval) {
$scope.docs = [{"doc":"http://google.com","stageName":"Project 1"},
{"doc":"http://google.com","stageName":"Project 2"},
{"doc":"http://google.com","stageName":"Project 3"},
{"doc":"http://google.com","stageName":"Project 4"},
{"doc":"http://google.com","stageName":"Project 5"},
{"doc":"http://google.com","stageName":"Project 6"},
{"doc":"http://google.com","stageName":"Project 7"},
{"doc":"http://google.com","stageName":"Project 8"}];
$scope.myclick = function(){
alert('clicked me ')
}
});
app.controller('ctrl2', function ($scope, $interval) {
$scope.docs = [{"doc":"http://google.com","stageName":"Unit 1"},
{"doc":"http://google.com","stageName":"Unit 2"},
{"doc":"http://google.com","stageName":"Unit 3"},
{"doc":"http://google.com","stageName":"Unit 4"},
{"doc":"http://google.com","stageName":"Unit 5"},
{"doc":"http://google.com","stageName":"Unit 6"},
{"doc":"http://google.com","stageName":"Unit 7"},
{"doc":"http://google.com","stageName":"Unit 8"}];
$scope.myclick = function(){
alert('clicked me ')
}
});
$scope.myclick = function(){
alert('clicked me ')
}
在控制器中,但指令是isolate
作用域,因此您需要通过传递myclickscope : {myclick: "&"}
或使用指令控制器方法来定义myclick
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句