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