2017-01-29 87 views
0

從選擇選項中的ng-repeat改爲ng選項後,我遇到了一些問題。問題在於ng-model發送整個數組而不是選定的數組。 我有幾個值的數組稱爲短信ng-model不能與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> 

這將使下拉短信陣列中所有的值,它應該保存選定值在我的js文件中爲$scope.sendSms.from

它所做的是保存所有數組而不是選定的值。

在ng-selected和ng-init中試圖從s.id切換到sms [0],但它給出了相同的結果。

當我在選項標籤中使用ng-repeat時,它工作正常,但第一個值爲空,所以我開始使用ng-options,這對我來說不是一種常用的方法。

因此,我要求你的幫助。

在此先感謝。

+0

這甚至沒有意義。你的'ng-init'試圖設置'ng-repeat'設置的相同值,這會引起一個問題。除了在特殊情況下除非事實上不推薦使用'ng-init'。 – Claies

回答

0

ng-selected="smsSender = s.id "對數組中所有值的計算結果爲true(除了ID爲零的猜測除外),請嘗試使用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>

相關問題