Выбор угловой вкладки с использованием метода контроллера
Я пытаюсь использовать AngularJS для отображения номера вкладки, когда определенная вкладка выбрана с помощью метода контроллера. Это не так, как ожидалось. Очень ценю вашу помощь в этом.
HTML
<body ng-app="coolApp">
<section ng-controller="panelSelector as panel">
<ul class="nav nav-pills">
<li ng-class="{active:panel.isSet(1)}"><a href ng-click="panel.setTab(1)">Concert Band</a></li>
<li ng-class="{active:panel.isSet(2)}"><a href ng-click="panel.setTab(2)">Ceremonial Band</a></li>
<li ng-class="{active:panel.isSet(3)}"><a href ng-click="panel.setTab(3)">191st Jazz Combo</a></li>
<li ng-class="{active:panel.isSet(4)}"><a href ng-click="panel.setTab(4)">Brass Ensemble</a></li>
<li ng-class="{active:panel.isSet(5)}"><a href ng-click="panel.setTab(5)">Celtic Fire</a></li>
</ul>
<p> the tab number is: {{tab}}</p>
</section>
</body>
Код
var app = angular.module("coolApp", []);
app.controller("panelSelector", function(){
this.tab = 1;
this.setTab = function(tabChoice){
this.tab = tabChoice;
};
this.isSet = function(checkTab){
return this.tab = checkTab;
};
});
2 ответа
Решение
var app = angular.module("coolApp", []);
app.controller("panelSelector", function(){
var panel = this;
panel.tab = 1;
panel.setTab = function(tabChoice){
panel.tab = tabChoice;
};
panel.isSet = function(checkTab){
return panel.tab == checkTab;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script>
<body ng-app="coolApp">
<section ng-controller="panelSelector as panel">
<ul class = "nav nav-pills">
<li ng-class="{active:panel.isSet(1)}"><a href ng-click = "panel.setTab(1)">Concert Band</a></li>
<li ng-class="{active:panel.isSet(2)}"><a href ng-click = "panel.setTab(2)">Ceremonial Band</a></li>
<li ng-class="{active:panel.isSet(3)}"><a href ng-click = "panel.setTab(3)">191st Jazz Combo</a></li>
<li ng-class="{active:panel.isSet(4)}"><a href ng-click = "panel.setTab(4)">Brass Ensemble</a></li>
<li ng-class="{active:panel.isSet(5)}"><a href ng-click = "panel.setTab(5)">Celtic Fire</a></li>
</ul>
<p> the tab number is: {{panel.tab}}</p>
</section>
</body>
- Ваша ссылка на
panel
сthis
было не правильно, Вы использовали
{{tab}}
вместо{{panel.tab}}
для отображения выбранной вкладки,И ваше возвращение должно было быть
return panel.tab == checkTab;
,
Надеюсь, что проблема решена!
Ваш this
внутри setTab
& isSet
функции разные, вы должны объявить переменную и назначить this
,
контроллер
var app = angular.module("coolApp", []);
app.controller("panelSelector", function(){
var panel = this;
panel.tab = 1;
panel.setTab = function(tabChoice){
panel.tab = tabChoice;
};
panel.isSet = function(checkTab){
return panel.tab == checkTab;
};
});