ng-model与ng-options和array不兼容

时间:2017-01-29 18:25:56

标签: javascript angularjs arrays angularjs-directive

从选择选项中的ng-repeat更改为ng-options后,我遇到了一些问题。问题是ng-model发送整个数组而不是选定的数组。 我有一个名为sms的值很少的数组

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>

这将使用sms数组的所有值进行下拉,并且应该将所选值保存到我的js文件中的$scope.sendSms.from

它的作用是保存所有数组而不是选定的值。

尝试在ng-selected和ng-init中从s.id切换到sms [0],但它给出了相同的结果。

当我在选项标签内使用ng-repeat时,它运行正常,但第一个值是空白的,所以我开始使用ng-options,这对我来说并不常见。

因此我向你求助。

提前致谢。

2 个答案:

答案 0 :(得分:0)

对于数组中的所有值,

ng-selected="smsSender = s.id "评估为true(我估计id为零的那个除外),请尝试ng-selected="smsSender == s.id "

答案 1 :(得分:0)

很少有观察结果:

    当您执行角度绑定时,
  • Sub test() Dim xmlhttp As New MSXML2.XMLHTTP60, myHtml As New HTMLDocument Dim PostData As String, ele As Object, thing As Object Dim x As Long x = 2 PostData = "what=5197365924" xmlhttp.Open "GET", "http://mobile.canada411.ca/search/" & PostData, False xmlhttp.setRequestHeader "Content-Type", "text/xml" xmlhttp.send myHtml.body.innerHTML = xmlhttp.responseText Set ele = myHtml.getElementsByClassName("merchant-title__name jsShowCTA") For Each thing In ele Cells(x, 1) = thing.innertext x = x + 1 Next thing End Sub 应为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>

工作演示:

&#13;
&#13;
<select id="sms-from" ng-options="s for s in sms" ng-model="sendSms.from" ng-change="getVal(sendSms.from)">
</select>
&#13;
var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl',function($scope) {
    $scope.sms = ['1','2','3','4','5'];
    
    $scope.getVal = function(val) {
      console.log(val);
    };
});
&#13;
&#13;
&#13;