Javascript ng在指令'内单击不工作;s模板
我是角度自定义指令的初学者。我只是使用custom指令根据controllers作用域值呈现两个html模板。呈现html ng click=“myclick()”事件后,两个模板都不起作用 view.htmlJavascript ng在指令'内单击不工作;s模板,javascript,jquery,angularjs,angularjs-directive,Javascript,Jquery,Angularjs,Angularjs Directive,我是角度自定义指令的初学者。我只是使用custom指令根据controllers作用域值呈现两个html模板。呈现html ng click=“myclick()”事件后,两个模板都不起作用 view.html <div ng-controller = 'ctrl1'> <div class="doc-list-wrapper" ></div> </div> <div ng-controller = 'ctrl2'>
<div ng-controller = 'ctrl1'>
<div class="doc-list-wrapper" ></div>
</div>
<div ng-controller = 'ctrl2'>
<div class="doc-list-wrapper" ></div>
</div>
我的指令
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 ')
}
应该是
$scope.myclick = function(){
alert('clicked me ')
}
在您的控制器中,但您的指令是隔离
作用域,因此您需要通过作用域:{myclick:&“}
传递myclick,或者使用指令控制器方法定义myclick
使用:
onclick="angular.element(this).scope().myclick()"
正确答案:)@sanman阅读有关angular的独立作用域的更多信息,要真正理解angular,这是一个关键点…@sanman:您如何将这些值传递给docListWrapper您能告诉我…阅读此stackoverflow,您会有更好的想法。。。检查指令docListWrapper是否正在从使用它的html中传递这两个值@Thalaivar app.directive('docListWrapper',['$timeout',function($timeout){return{restrict:'C',priority:500,replace:true,templateUrl:'tmpl doc list wrapper',scope:{docs:'=docs',myclick:&},link:function(scope,element,attrs){} }; }]). 我尝试了这个,但不起作用。您需要从这里传递它。…
angular.element
仅在debugInfo
可用时才起作用。它可能会在生产中失败。
$scope.myclick = function(){
alert('clicked me ')
}
$scope.myclick = function(){
alert('clicked me ')
}
onclick="angular.element(this).scope().myclick()"