我們對我們網站上的這個按鈕:將控制轉換爲Angular Directive?
<button class="btn btn-primary" id="button-loading-example"
ng-click="progress.buttonLoading.load()"
ng-model="progress.buttonLoading" pb-button-progress
type="button">Save</button>
的NG-模型鏈接到這一點,在控制器(Controller爲 「進步」):
_this.buttonLoading = {
isLoading: false,
text: 'Saving',
load: function() {
_this.buttonLoading.isLoading = true;
$timeout(function() {
_this.buttonLoading.isLoading = false;
}, 2000);
}
};
我試圖使這個指示。我可以通過類和標籤從我的元素:
<pb-spinner-button ng-class-list="btn btn-primary">Save</pb-spinner-button>
我無法弄清楚如何連接起來(或者乾脆放棄,並取代)的NG-模型,更糟糕的,我不知道在哪裏掛鉤進入舊控制器的「加載」功能。
我意識到這很有可能舊的控制是過度的,應該是一個指令,但我從誰繼承誰是指示厭惡。
這裏是我的指令至今:
(function() {
'use strict';
angular.module('app').directive('pbSpinnerButton', function() {
return {
restrict: 'E',
require: 'ngModel',
scope: {
ngModel: '=',
ngClassList: '@'
},
controller: 'SpinnerController',
template: '<button class="{{ngClassList}}" ng-click="buttonLoading.load()" ng-model="buttonLoading" pb-button-progress type="button"><ng-transclude></button>',
transclude: true,
link: function postLink(scope, element, attrs) {
}
};
})
.controller('SpinnerController', function($timeout) {
var _this = this;
_this.buttonLoading = {
isLoading: false,
text: 'Saving',
load: function() {
_this.buttonLoading.isLoading = true;
$timeout(function() {
_this.buttonLoading.isLoading = false;
}, 2000);
}
};
});
})();
按照要求,這裏是一個plunkr:http://plnkr.co/edit/EOekzFdUDrArZ4dkolLl?p=preview
沒有模型被傳遞給屬性,但因爲它是一個按鈕,你需要ng模型嗎? ..在plunker中創建一個演示。 – charlietfl
這是我不明白的一部分。這裏是一個plunker http://plnkr.co/edit/EOekzFdUDrArZ4dkolLl?p=preview – Steve
以及拋出的錯誤是由於沒有ng模型被傳遞。對於'type = button'我看不到任何用於ng-model的任何用法...只是一個UI按鈕 – charlietfl