2015-10-12 57 views
1

我有以下代碼:呼叫從參數指令控制器功能

(function() { 
    'use strict'; 

    angular 
    .module('app', []); 

})(); 


(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .controller('MainController', MainController); 

    function MainController() { 
     var vm = this; 

     vm.onResize = function(viewport) { 
      console.log('onResize', viewport); 
     }; 
    } 

})(); 


(function() { 
    'use strict'; 

    angular 
    .module('app') 
    .directive('resize', resize); 

    function resize($window) { 
    var directive = { 
     restrict: 'A', 
     scope: { 
     callback: '&resize' 
     }, 
     link: link 
    }; 

    return directive; 

    function link(scope) { 

     angular.element($window).on('resize', function() { 

     scope.callback({ 
      width: 100, 
      height: 200 
     }); 

     }); 

    } 
    } 

})(); 

Plnkr演示http://plnkr.co/edit/s7x28XI08QUytTVORtaK

正如你可以看到我試圖創建一個回調函數的簡單調整大小的指令,我將調整窗口大小後調用。我的問題是我想傳遞一些參數給回調函數,但它目前根本無法工作。而不是我已經傳遞給onResize函數中的回調viewport函數的對象是undefined。我是Angular的初學者,所以請解釋我在這裏做錯了什麼將不勝感激。謝謝。

+1

也就是說這裏解釋:https://docs.angularjs.org/api/ng/service/$ compile#-scope-,以*&或&attr *開頭的項目符號。 –

回答

1

只是傳遞的功能參考指令

<div resize="vm.onResize"></div> 

JS

var directive = { 
    restrict: 'A', 
    scope: { 
    callback: '=resize' 
    }, 
    link: link 
}; 

DEMO