как задать имя метода динамически в Angularjs - PullRequest
0 голосов
/ 22 мая 2018

У меня есть несколько вкладок на странице, нажав на любую из них, я хочу вызвать метод: 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 голосов
/ 22 мая 2018

Ваш код должен быть:

$scope.tabSelected = function (tab) {
        $scope.selectedTab = tab;
      };
0 голосов
/ 22 мая 2018

Я думаю, что определение всех функций до $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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...