我在看AngularJs并有一个问题,这是我的指示:
myApp.directive("enter", function(){
return{
restrict: 'A',
scope:{},
controller: function($scope){
$scope.logSomething=function(somevalue){
console.log(somevalue+" is logged");
}
},
template: '<input type="text" ng-model="myModel">'+
'<div ng-click="logSomething(myModel)">click me</div>'
}
})
这有效,但我的问题是如何使用绑定点击而不是 ng-click 指令执行相同的操作?并不是说它更好(也许?),但是好奇心
它应该包括这样的东西,但无法得到全局:
function(scope, element, attrs){
element.bind("click", function(){
scope.$apply(attrs.enter);
})
答案 0 :(得分:16)
试试这个:
myApp.directive("enter", function(){
return{
restrict: 'A',
scope:{},
controller: function($scope){
$scope.logSomething=function(somevalue){
console.log(somevalue+" is logged");
}
},
template: '<input type="text" ng-model="myModel">'+
'<div button>click me</div>'
}
});
myApp.directive("button", function(){
return{
restrict: 'A',
link: function(scope , element){
element.bind("click", function(e){
scope.logSomething( scope.myModel );
});
}
}
});
答案 1 :(得分:3)
正如您所指出的,您只需使用element.bind
:
myApp.directive(
'clickMe',
function () {
return {
template : '<div>Click me !</div>',
replace : true,
link : function (scope, element) {
element.bind('click', function ()
{
alert('Clicked !');
});
},
};
}
);
但是,当然,在您的情况下,您必须使用ngClick
代替。