Я пытаюсь создать своеобразное меню с вкладками, используя ng-switch
.AngularJS ng-switch-when выражение
Я установил вкладки в моих Ctrl (потоки) и следить за выбранной в данный момент один, как выбор:
app.controller("StreamCtrl", function($scope) {
$scope.streams = [{
title: 'latest',
icon: 'time',
data: "Hi, I'm data."
}, {
title: 'popular',
icon: 'fire',
data: "Hi, I'm data too!"
}];
$scope.selection = $scope.streams[0];
$scope.getCurrentStreamIndex = function(){
// Get the index of the current stream given selection
return $scope.streams.indexOf($scope.selection);
};
// Go to a defined stream index
$scope.goToStream = function(index) {
if($scope.streams[index]) {
$scope.selection = $scope.streams[index];
}
};
});
И на мой взгляд (index.html), я использую нг-повтора, чтобы создать контейнер для каждой вкладки:
<section class="streams" ng-controller="StreamCtrl" ng-switch="stream.title == selection.title">
<section class="stream" ng-switch-when="true" ng-repeat="stream in streams">
{{stream.title}}
<div class="loaderContainer"><div class="loader"></div></div>
</section>
</section>
проблема я бегу на это с моим нг-переключателя-, когда утверждение, потому что он не будет принимать выражение.
Если бы я мог установить ng-switch-when="{{stream.title}}"
, то, полагаю, я мог бы использовать ng-switch="selection.title"
, и все было бы хорошо.
Как бы структурировать выражение ng-switch
, хотя оно соответствует динамически сгенерированному списку?
в вашем "нг-переключатель", где «поток»? я вижу «выбор», определенный в вашем контроллере, но «поток» не определен до «ng-repeat», насколько я могу судить. – Jonah
Мне не знакомо, когда ng-switch оценивает его выражение и в какой области он получает оценку. То, что вы видите, было тестом. Я надеялся, что это будет оценено в рамках ng-switch-when (также ng-repeat в этом случае), поэтому поток (из ng-repeat) может быть доступным объектом. –
Не уверен на 100%, но я не думаю, что это так. Я бы попытался провести реструктуризацию с предположением, что «поток» будет недоступен, кроме как внутри оператора ng-repeat. – Jonah