Я пытаюсь создать директиву многократного использования, которая имеет состояние загрузки. То есть при щелчке он отключает себя и отображает встроенное изображение для обозначения загрузки, которое затем удаляется после завершения. Я делаю это, устанавливая переменную области видимости в методе кликов и отменяя ее, что изменяет состояние кнопки.методы наследования с помощью директивных выражений
Я хочу, чтобы метод, который он вызывал при щелчке, находился в родительской области, и я также хочу, чтобы он подключался к проверке родительской области, поэтому он отключается, когда родительская форма недействительна. Это те части, с которыми мне сложно работать - я знаю, что мои проблемы связаны с областью, но я застрял.
<loading-button class="login" data-ng-click="login()" text="Login" toggle="loaded"></loading-button>
Я надеялся, что-то сделать, как показано ниже, но как я могу связать метод нажмите заявленной в директиве, например, чтобы быть на самом деле называется из директивы? Или это плохая практика? В настоящее время это не работает.
angular.module("App.directives").directive("loadingButton", function() {
return {
restrict: "E",
replace: true,
transclude: true,
template: '<button data-ng-click="{{ngClick}}">{{text}}<img class="loading" src="images/ButtonLoader.gif" alt=""></button>',
scope: {
"toggle": "=",
"text": "=",
"ng-disabled": "=",
"disabled": "=",
"ngClick": "&"
},
link: function(scope, element, attributes) {
scope.text = attributes.text;
var expression = attributes.toggle;
scope.$watch(expression, function(newValue, oldValue) {
if(newValue === oldValue) {
return;
}
if(newValue) {
element.removeAttr("disabled");
element.find("img.loading").hide();
}
else {
element.attr("disabled", "disabled");
element.find("img.loading").show();
}
});
}
};
});
Используется как это в родительской области:
$scope.login = function() {
$scope.loaded = false; // Disable button and show it loading
// Do login stuff
$scope.loaded = true; // Enable button and hide it loading
}
Edit:
Вот скрипку
http://jsfiddle.net/jonathanwest/frvk6/2/
Есть некоторые проблемы с кодом, любезно настроенным для демонстрации плункера или скрипки, чтобы проблема могла быть исправлена. –
Должен ли вызываться ngClick? 'data-ng-click =" {{ngClick()}} "' – rGil
Ajay - Я сказал выше, что код не работает, поэтому сообщение. Я могу сделать демонстрацию скрипки, но она все равно не сработает. – jwest