我是一名对Angular不太熟悉的人,我正在尝试编写自己的指令以学习这些对象的工作方式。我的问题在于如何隔离指令的作用域,以便我可以在同一个控制器中多次使用它。
我创建了一个plunker来更好地解释情况:http://plnkr.co/edit/NsISESR9sIs5Nf577DX4?p=preview HTML:
我创建了一个plunker来更好地解释情况:http://plnkr.co/edit/NsISESR9sIs5Nf577DX4?p=preview HTML:
<body ng-controller="MainCtrl">
<button id="button1" ng-click="dummyClickFoo()" wait-button>Foo</button>
<button id="button2" ng-click="dummyClickBar()" wait-button>Bar</button>
</body>
js:
app = angular.module('app', []);
app.controller('MainCtrl', function($scope) {
$scope.dummyClickFoo = function() {
$scope.startSpinner();
setTimeout(function() {
$scope.stopSpinner();
}, 3000);
};
$scope.dummyClickBar = function() {
$scope.startSpinner();
setTimeout(function() {
$scope.stopSpinner();
}, 3000);
};
});
app.directive('waitButton', function() {
return {
restrict: 'A',
controller: ['$scope', '$element', function($scope, $element) {
$scope.startSpinner = function() {
alert($element.attr('id'));
};
$scope.stopSpinner = function() {
alert($element.attr('id'));
};
}]
};
});
基本上它可以使用一个按钮,但是不能使用两个按钮。我知道我应该隔离它们的作用域,但我不知道该如何做... 我看到周围有一些例子,但它们使用额外的属性来传递变量,而我需要调用我的内部方法。
有人能帮我想出如何做吗? 谢谢!