考虑以下指令:(现场演示)
app.directive('spinner', function() {
return {
restrict: 'A',
scope: {
spinner: '=',
doIt: "&doIt"
},
link: function(scope, element, attrs) {
var spinnerButton = angular.element("<button class='btn disabled'><i class='icon-refresh icon-spin'></i> Doing...</button>");
element.after(spinnerButton);
scope.$watch('spinner', function(showSpinner) {
spinnerButton.toggle(showSpinner);
element.toggle(!showSpinner);
});
}
};
});
像这样使用:
<button ng-click="doIt()" spinner="spinIt">Spin It</button>
当spinner
' 的值(即$scope.spinIt
本例中的 的值)为true
时,该元素应该被隐藏而spinnerButton
应该出现。当spinner
的值为时false
,该元素应该是可见的并且spinnerButton
应该是隐藏的。
这里的问题doIt()
是不在隔离范围内,因此不会在点击时调用。
实现该指令的“Angular 方式”是什么?