我目前正在學習在AngularJs中使用指令,儘管我知道Angular 2.0仍然只是在alpha中,但我已經開始閱讀關於web的「爲角2.0準備」文章。將角度指令範圍傳遞給指令控制器
其中有相當一部分提到了離開鏈接函數,並使用控制器和bindToController只是爲了使指令更像Angular 2.0的「組件」。
我遇到的問題是,我真的不知道該怎麼我的指令範圍傳遞給我使用該指令控制器...
例如,給出以下指令時:
(function() {
'use strict';
angular.module('app').directive('gidsImagePreview', imagePreview);
/* @ngInject */
function imagePreview() {
var directive = {
restrict: 'EA',
templateUrl: 'scripts/directives/gidsImagePreview.directive.html',
scope : {
images : '='
},
controller: ImagePreviewController,
controllerAs: 'vm',
bindToController: true
};
return directive;
}
/* @ngInject */
function ImagePreviewController(){
var self = this;
self.featured = self.images[0];
self.preview = preview;
function preview(img){
self.featured = img;
}
}
})();
而下面的html「呼」的指令(vm.project.images是圖像對象的數組與文件名屬性):
<gids-image-preview images="vm.project.images"></gids-image-preview>
那麼,是什麼讓我的「 SE ImagePreviewController中的「lf.images」總是未定義的?
閱讀this article,他/她似乎是在做我在做什麼(只是不能與數組對象)...
從我迄今爲止所瞭解的情況來看,通過使用「bindToController」,變量可在控制器的「this」對象上使用,不需要$ scope。 – 2015-04-03 10:41:58