2017-05-25 58 views
1

我想在一个指令中附加一个控制器作用域方法,但是当我点击指令按钮时,没有调用链接方法。请查看代码。有一个side-nav指令,我在其中使用select参数附加了方法。但是当按钮被点击时,方法不会被调用。方法绑定在Angular中不起作用

的index.html

<div class="container" layout="row" flex ng-controller="userController as vm" ng-init="vm.loadUsers()"> 
     <md-sidenav md-is-locked-open="true" class="md-whiteframe-1dp"> 
      <side-nav users="vm.users" select="vm.selectUser(user)"></side-nav> 

     </md-sidenav> 
     <md-content id="content" flex> 
      <user-detail selected="vm.selected" share="vm.share()"></user-detail>   
     </md-content> 
    </div> 

userController.js

app.controller("userController", ['$scope', 'userService', '$mdBottomSheet', function ($scope, userService, $mdBottomSheet) { 
    var self=this; 
    self.users = []; 
    this.name = "manish"; 

    self.loadUsers = function() { 
     userService 
      .loadAllUsers() 
      .then(function (users) { 
       self.users = users; 
       self.selected = users[0]; 
       userService.selectedUser = self.selected;     
      }); 
    } 

    self.selectUser = function (user) { 
     self.selected = user; 
     userService.selectedUser = self.selected; 
    } 

}]); 

directives.js

app.directive("sideNav", function() { 
    return { 
     restrict :'AE', 
     templateUrl: './views/sidenav.html', 
     scope : { 
      select : '&', 
      users : '=' 
     } 
    } 
}); 

./views/sidenav.html

<md-list> 
    <md-list-item ng-repeat="user in users"> 
     <md-button ng-click="select({user:user)"> 
      <md-icon md-svg-icon="{{user.avatar}}" class="avatar"></md-icon> 
      {{user.name}} 
     </md-button> 
    </md-list-item> 
</md-list> 
+0

'选择({用户:用户)':无效代码。右大括号缺失。 –

+0

在最后时刻错过了错字,但即使这样,它也无法正常工作。就在不久之前,我将selectUser的方法名称更改为其他名称,现在正在调用它。我不确定selectUser单词有什么问题。您可以通过在控制器和指令中放置selectUser来尝试使用它 –

回答

0

试着做这样的:

的index.html

<side-nav users="vm.users" select="vm.selectUser"></side-nav> 

./views/sidenav.html

<md-button ng-click="select()(user)">