2015-12-05 26 views
1

我测试了Angular材料,我试图用一个自定义指令,但它似乎不想尊重我的绑定vm = this。这是我正在尝试的一个例子。客户指令与角材料和控制器As

HTML

<md-button ng-click="vm.test()">vm.Test</md-button> 

的JavaScript

(function() { 
    'use strict'; 

    angular 
    .module('sidenav.directive', ['ngMaterial']) 
    .directive('sidenav', sidenav); 

    function sidenav() { 
    return { 
     templateUrl: 'app/components/sidenav/sidenav.directive.html', 
     restrict: 'EA', 
     controller: SidenavController, 
     controllerAs: 'vm', 
     bindToController: true 
    }; 
    } 

    SidenavController.$inject = ['album', '$scope', 'authenticated', '$location', '$mdSidenav']; 
    function SidenavController(albumFactory, $scope, authenticated, $location, $mdSidenav) { 
    var vm = this; 
    vm.test = function() { 
     console.log('vm fired'); 
    }; 
    } 
})(); 

的单击事件将不会触发。但是,如果我用$scope替换控制器中的vm,并使用ng-click="test()"按钮即可。任何帮助如何解决这个问题将不胜感激。

回答

0

需要在一个范围内添加到指令,更新:

function sidenav() { 
    return { 
    templateUrl: 'app/components/sidenav/sidenav.directive.html', 
    restrict: 'EA', 
    controller: SidenavController, 
    controllerAs: 'vm', 
    bindToController: true, 
    scope: { 
     vm: '=' 
    } 
    }; 
}