2015-06-13 6 views
0

У меня возникла проблема с angular.js 1.4.0. Я не могу установить значение по умолчанию в теге select, если я буду использовать «номер», но он будет работать, если я использую «строку». Оператор select - это жесткий код в представлении. Я уже инициализировал свою модель в контроллере.Невозможно установить выбранную по умолчанию опцию в теге выделения

// Это НЕ РАБОТАЕТ, переданное значение является «числом» $ scope.colors = 2;

// Это будет WORK, переданное значение является «строкой» $ scope.colors = '2';

VIEW/МОДЕЛЬ:

<div ng-app="app"> 
    <div ng-controller="MyController"> 
    <select ng-model="colors"> 
     <option value="1">Red</option> 
     <option value="2">Blue</option> 
     <option value="3">Green</option> 
    </select> 
    <p>Selected Color: {{colors}}</p> 
    <div ng-switch="colors"> 
     <p ng-switch-when="1"><span class="red-block"></span></p> 
     <p ng-switch-when="2"><span class="blue-block"></span></p> 
     <p ng-switch-when="3"><span class="green-block"></span></p> 
    </div> 
</div> 

CONTROLLER:

angular.module('app', []).controller('MyController', function($scope) { 
    /* angular.js version 1.4.0 issue: 
     $scope.colors = 2; --> will not work 
     $scope.colors = '2'; --> will work 

     This is working on angular.js version 1.3.15 
    */ 
    $scope.colors = 1; 
}); 

Если я использую angular.js версию 1.3.15, как 'число' и 'строка' будет работать.

Примечание: угловая версия, установленная в кодепе, равна 1.4.0, поэтому вы можете увидеть ошибку.

http://codepen.io/joemalski/pen/YXQMKO?editors=001

+0

поэтому в чем вопрос? – Freezystem

+0

Я догадываюсь, что мой вопрос в том, что я хотел выяснить, есть ли у него что-то, что он будет работать, как в версии ang.15.1.15, что мне не нужно проверять, что значения, которые я передаю в $ scope.colors, является «числом» или «строкой». – joemalski

ответ

0

JS:

$scope.options = [{ name: "a", id: 1 }, { name: "b", id: 2 }]; 
$scope.selectedOption = $scope.options[1]; 

HTML:

<select data-ng-options="o.name for o in options" data-ng-model="selectedOption"></select> 

Это оставит "б" пункта для выбора.

+0

Спасибо. Думаю, мне просто нужно будет использовать ng-options. – joemalski

0

Хорошо, вместо того, чтобы выбрать статический/вариант использовать динамический один:

$scope.colors = ["red","blue","green"]; 

в вашем HTML

<select ng-model="selectedColor" ng-option="color in colors"></select> 

<div ng-switch="selectedColor"> 
    <p ng-switch-when="red"><span class="red-block"></span></p> 
    <p ng-switch-when="blue"><span class="blue-block"></span></p> 
    <p ng-switch-when="green"><span class="green-block"></span></p> 
</div> 

использование строки как и вы будете в безопасности.

+0

Дополнительная информация о проблеме, https://github.com/angular/angular.js/blob/master/CHANGELOG.md#140-beta0-photonic-umbrakinesis-2015-01-13 – joemalski