什么被认为是最佳实践,将指令附加到控制器内的元素或绑定事件?
指令
<openread-more what-to-expand="teds-bets-readmore" />
myApp.directive('openreadMore', function () {
return {
restrict: 'AE',
replace: false,
template: '<a class="attach-event" what-to-expand="readmore1">Event</a></span>',
link: function (scope, elem, attrs) {
elem.on('click', function () {
// attached code on click
});
}
}
});
只需将其附加到控制器
中homepageCtrls.controller('homepageCtrl', function ($scope, $http) {
angular.element(document.querySelectorAll('.attach-event')).on('click', function () {
// attached code on click
});
});
第二种选择似乎更短更清洁,但我不知道它是否被认为是最佳做法。
答案 0 :(得分:0)
只需使用ng-click
指令。
<openread-more what-to-expand="teds-bets-readmore" ng-click="doSomeAction()" />
在控制器上:
homepageCtrls.controller('homepageCtrl', function ($scope, $http) {
$scope.doSomeAction = function() {
// onClick logic here...
};
});
如果你绑定了其他类型的事件,只需向自己提出这个问题:“根据当前视图或应用程序状态,我会对此事件有不同的行为吗?”。
如果答案是是,那么您应该在控制器上注册事件处理程序。如果答案是否(这意味着您将始终具有相同的行为),则注册并处理指令上的事件。
然而,您不应该访问控制器上的UI元素(例如,不要使用选择器或类似的东西)。控制器应该是可重用的,这意味着您应该能够在具有不同UI元素的不同UI上使用它们。最好的方法是定义一个允许绑定特定事件的指令,例如Angular UI Event Binder。