ng-model具有字符串值和ng-option整数

时间:2016-12-02 09:56:15

标签: javascript angularjs

这是我的JSON数组:

modelValue='1'

在ng-model中我设置的值可能是字符串

ng-option="option.id as option.name for option in array"
ng-model="modelValue"

我有ng-option

{{1}}

但它没有在选择

中显示ng-model的选定值

5 个答案:

答案 0 :(得分:2)

  

在ng-model中我设置的值可能是字符串

您应primitive or object type$scope.modelValue提供与id相同的JSON array。这是首选方式。

如果仅动态提取$scope.modelValue并且无法保证类型一致性,则可以应用函数将其转换为设置为<select ng-model="modelValue" ng-options="getId(option.id) as option.name for option in myarray"> </select> 的类型

在HTML中

$scope.modelValue='1';

$scope.myarray=[ {id:1, name:'A'} , {id:2, name:'B'} ];

$scope.getId = function(id)
{
   if(typeof $scope.modelValue == "string")
     return String(id);
   else if(typeof $scope.modelValue == "number")
     return parseInt(id);
}

在控制器

{{1}}

<强> COMPLETE EXAMPLE

另见this回答

答案 1 :(得分:0)

这是一个基于您的描述的工作JSFiddle示例:http://jsfiddle.net/9pLdgmm1/1/

您应该使用ng-options代替ng-option

<select ng-options="p.name for p in people"
        ng-model="selectedPerson">
</select>

答案 2 :(得分:0)

您应该使用ng-options代替ng-option,您应该使用integer本身而不是字符串..

&#13;
&#13;
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<select ng-model="modelValue" ng-options="option.id as option.name for option in names">
</select>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.names = [ {id:1, name:'A'} , {id:2, name:'B'} ]
    $scope.modelValue = 1;
});
</script>

<p>This example shows how to fill a dropdown list using the ng-options directive.</p>

</body>
</html>
&#13;
&#13;
&#13;

请运行以上代码段

Here is a Working DEMO

答案 3 :(得分:0)

不应该选择此项,因为所有id都是数字。如果你想让它选择,那么将你的$ scope.modelValue解析为这样的数字。

$scope.modelValue= parseInt("1");

同时更改ng-options而不是ng-option

答案 4 :(得分:-1)

ng-options中有语法错误:

<select ng-options="option.name for option in array" ng-model="modelValue"></select>

var myapp = angular.module('myapp', []);
myapp.controller('FirstCtrl', function($scope) {
  $scope.array = [{
    id: 1,
    name: 'A'
  }, {
    id: 2,
    name: 'B'
  }];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp">
  <fieldset ng-controller="FirstCtrl">
    <select ng-options="option.name for option in array" ng-model="modelValue"></select>
    modelValue is: {{modelValue}}
  </fieldset>
</div>