Ng-модель в другом состоянии

У меня есть 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>

Если вы хотите использовать model в зависимости от состояния, вы можете использовать ng-show. Дайте мне знать, если вам понадобятся подробности, я поставлю в качестве ответа.

USS 04.05.2018 13:16

А как меняется condi? это динамически или только во время инициализации

Shashank Vivek 04.05.2018 13:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
232
2

Ответы 2

Я думаю, что лучший подход - использовать средний массив.

(На самом деле это можно сделать с помощью 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>

Другие вопросы по теме