2017-01-29 44 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>

相关问题