У меня есть 2 разных массива:
var oldarr = ['one','two','three'];
var newarr = ['four','five','six'];
var condi = 1 / 0;
Я использую значение массива как ng-модель в качестве значения параметров для раскрывающегося списка выбора. Однако я хочу использовать другой массив на основе значения переменной cond, это означает: если condi равно 1, я буду использовать ng-model = oldarr, а vif confi равно 2, я буду использовать ng-model = newarr.
Мое раскрывающееся меню показано ниже. Может кто-нибудь, пожалуйста, посоветует мне, как я могу это сделать?
<select ng-model = "oldarr " ng-selected = "{{defaultvalue == selectedslastatus}}">
<option ng-repeat = "vals in oldarr ">{{vals }}</option>
</select>
А как меняется condi? это динамически или только во время инициализации



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, что лучший подход - использовать средний массив.
(На самом деле это можно сделать с помощью ng-show, ng-if или ng-switch, но если вам нужен чистый HTML-шаблон (представление) и структуры ваших массивов такие же, вы можете перенести логику в контроллер)
нравиться:
<select ng-model = "modelArr" ng-selected = "{{defaultvalue == selectedslastatus}}">
<option ng-repeat = "vals in modelArr ">{{vals }}</option>
</select>
и выполните логику использования массива в вашем контроллере.
Вот как может выглядеть ваш контроллер:
//
$scope.$watch('condi', function (){
if (condi === true)
$scope.modelArr = newArr;
else
$scope.modelArr = oldArr;
})
Я бы просто поменял точки зрения на ng-show или что-то подобное. Предполагая, что condi не всегда является логическим (1 или 0), я предлагаю ng-switch. Вот пример:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.condi = 1;
$scope.oldarr = ['one', 'two', 'three'];
$scope.newarr = ['four', 'five', 'six'];
$scope.changeCondi = function() {
$scope.condi = ($scope.condi == 1) ? 0 : 1;
}
});<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<div ng-app = "myApp" ng-controller = "myCtrl">
<button ng-click = "changeCondi()">Change condi</button> : {{condi}}
<div ng-switch = "condi">
<div ng-switch-when = "1">
<select ng-model = "oldar">
<option ng-repeat = "vals in oldarr">{{vals}}</option>
</select>
Selected: {{oldar}}
</div>
<div ng-switch-when = "0">
<select ng-model = "newar">
<option ng-repeat = "vals in newarr">{{vals}}</option>
</select>
Selected: {{newar}}
</div>
</div>
</div>
Если вы хотите использовать
modelв зависимости от состояния, вы можете использоватьng-show. Дайте мне знать, если вам понадобятся подробности, я поставлю в качестве ответа.