AngularJS使用ng-click调用控制器内的函数

时间:2014-05-17 21:23:27

标签: angularjs angularjs-ng-click

我在控制器内部运行功能时遇到了问题。

给出以下部分:

<div ng-controller="KundeDetailCtrl"><table class="table table-hover">
    <thead>
    <tr>
        <th>Name</th>
        <th>InstallationsID</th>
    </tr>
    </thead>
    <tbody  >

    <tr data-ng-repeat="mandant in kunde.mandanten" ng-click="getMandant(mandant)" >

        <td> {{mandant.name}}</td>
        <td>{{mandant.id}}</td>

    </tr>
    </tbody>


</table></div>

我希望能够点击一行并在我的控制器中调用相应的功能:

var AppControllers = angular.module('AppControllers', []);


AppControllers.controller('KundeDetailCtrl', ['$scope', '$routeParams', 'Kunde',
  function($scope, $routeParams, Kunde) { 
$scope.kunde = Kunde.get({kundeId: $routeParams.kundeId}, function(kunde) {

});

  $scope.getMandant = function(id){

      for(var i= 0, l=$scope.kunde.mandanten.length; i<l; i++){
          if($scope.kunde.mandanten[i].id == "id")
          {
              $scope.mandant = $scope.kunde.mandanten[i];

          }
      }
      Location.href='index.html#/kunden/{{kunde._id}}/module'
  };


  }]);

实际上,我只想知道点击了哪一行,并将点击的行的对象传递给下一个应该显示其他数据的部分。

ng-click似乎根本没有做任何事情。在控制台中,我只看到getMandant: null

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您似乎正在将mandaten列表中的id与字符串“id”进行比较而不是对象ID:

if($scope.kunde.mandanten[i].id == "id")

你还应该考虑使用===而不是==,它是比较javascript中的东西的首选方式。

您似乎正在重定向到角度应用程序中的另一个视图,是否有任何理由不使用$ location服务?