2017-01-29 11 views
0

После изменения с ng-repeat в опциях выбора в ng-options я столкнулся с некоторыми проблемами. Проблема в том, что ng-модель отправляет целую массив вместо выбранной. У меня есть массив с несколькими значениями под названием смсng-модель не работает должным образом с ng-опциями и массивом

var sms = ['1','2','3','4','5']; 

Это, как я это сделать в HTML

<select id="sms-from" ng-options="s.id as s for s in sms" ng-selected="smsSender = s.id " ng-init="s = s.id " ng-model="sendSms.from"> 
</select> 

Это сделает выпадающий список со всеми значениями массива смс, и он должен сохранить выбранный значение $scope.sendSms.from в моем файле js.

Что он делает, так это сохранение всего массива вместо выбранных значений.

Были попытки переключиться с s.id на смс [0] в ng-selected и ng-init, но он дал тот же результат.

Он работал нормально, когда я использовал ng-repeat внутри тега опции, но тогда первое значение было пустым, поэтому я начал использовать ng-опции, которые для меня не являются обычным способом.

Поэтому я прошу вас помочь.

Заранее спасибо.

+0

это даже не имеет смысла. ваш 'ng-init' пытается установить то же значение, что и параметр' ng-repeat', это вызовет проблему. кроме того, что на самом деле не рекомендуется использовать 'ng-init', за исключением особых обстоятельств. – Claies

ответ

0

ng-selected="smsSender = s.id " оценивает до true для всех значений в массиве (кроме одного с нулевым нулем, я думаю), попробуйте вместо этого попробовать ng-selected="smsSender == s.id ".

0

Несколько наблюдений:

  • var sms = ['1','2','3','4','5']; должны быть $scope.sms = ['1','2','3','4','5']; как вы выполняете угловое связывание.
  • ng-options Синтаксис неверен. Он должен быть ng-options="s for s in sms", как в sms массив нет ключа с именем id.

Исправленная <select> элемент синтаксиса :

<select id="sms-from" ng-options="s for s in sms" ng-model="sendSms.from" ng-change="getVal(sendSms.from)"> 
</select> 

Работа демо:

var myApp = angular.module('myApp',[]); 
 

 
myApp.controller('MyCtrl',function($scope) { 
 
    $scope.sms = ['1','2','3','4','5']; 
 
    
 
    $scope.getVal = function(val) { 
 
     console.log(val); 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <select id="sms-from" ng-options="s for s in sms" ng-model="sendSms.from" ng-change="getVal(sendSms.from)"> 
 
</select> 
 
</div>

 Смежные вопросы

  • Нет связанных вопросов^_^