Angualr.js <select> ng-model添加奇怪的字符串

时间:2019-09-12 12:03:25

标签: html angularjs

在我的angular js应用程序中,我使用了以下内容

<select id='baseline' class="form-control" ng-model='vm.modal.baseline'>
   <option ng-repeat='base in vm.baseline' ng-value='base'>{{base}}</option>
</select>

然后在我的控制器中

vm.baseline = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
vm.modal = {baseline: '3'};

但是select未默认设置为3,而是添加了

<option value="? string:3 ?"></option>

我应该怎么做才能将默认值设置为3?谢谢。

3 个答案:

答案 0 :(得分:1)

您的控制器AS语法有问题,它可以与$ scope一起正常工作,请参见例如您的代码。

https://jsfiddle.net/6r5Lnasb/

<div ng-app ng-controller="LoginController">    
    <select id='baseline' class="form-control" ng-model='modal.baseline'>
   <option ng-repeat='base in baseline' ng-value='base'>{{base}}</option>
</select>
</div>

function LoginController($scope) {
    $scope.baseline = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$scope.modal = {baseline: '3'};
}

答案 1 :(得分:0)

它不起作用,因为ng-model值是一个字符串,而选项值是数字。
  更改vm.modal = {baseline: 3};或将baseline转换为字符串数组vm.baseline = ['1', '2', '3' ...];

答案 2 :(得分:0)

尝试替换这两行

vm.baseline = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
vm.modal = {baseline: '3'};

在下面几行

vm = {
 baseline: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
 modal:  {
  baseline: '3'
 }
}

由于未定义/声明变量vm,类似var vm;var vm = {};var vm = null这样的变量将数组值或任何值分配给未定义变量的属性引发错误,因此无法正常工作。

如果您已看到浏览器控制台,则可能会遇到类似的错误:TypeError: Cannot set property 'baseline' of undefined