如何在Angularjs中动态设置方法名称

时间:2018-05-22 04:52:01

标签: angularjs

我在页面中有多个标签,通过点击其中任何一个我想调用方法: HTML:

@foreach (Tabs tab in Enum.GetValues(typeof(Tabs)))
  {
    <uib-tab index="@((int)tab)">
        <uib-tab-heading ng-click="tabSelected('@tab')">
        </uib-tab-heading>
    </uib-tab>
  }

AngularJS:

$scope.tabSelected = function (tab) {
        $scope[tab]();
      };

现在我得到错误说:$scope[tab]()不是函数! 我该如何解决?

2 个答案:

答案 0 :(得分:0)

我认为在$scope.tabSelected之前定义所有功能是你的答案。

Javascript从上到下工作,因此必须在此函数之前对函数进行描述。

$scope.x = function() {

};

$scope.y = function() {

};

$scope.z = function() {

};

$scope.tabSelected = function(tab) {
  $scope[tab]();
};

一个工作示例:

angular.module("app", []).controller("text", [
  "$scope",
  function($scope) {
    $scope.x = function() {
      console.log("x");
    };

    $scope.y = function() {
      console.log("y");
    };

    $scope.z = function() {
      console.log("z");
    };

    $scope.tabSelected = function(tab) {
      $scope[tab]();
    };
  }
]);
<div ng-app="app">
  <div ng-controller="text">

    <button ng-click="tabSelected('x')">X</button>
    <button ng-click="tabSelected('y')">Y</button>
    <button ng-click="tabSelected('z')">Z</button>


  </div>
</div>

CodePen

答案 1 :(得分:0)

你的代码应该是:

$scope.tabSelected = function (tab) {
        $scope.selectedTab = tab;
      };