我正在和AngularJS合作,而且我非常新。AngularJS ng-repeat默认值不起作用
我的目标是用数据源中的OPTION元素填充SELECT标签。 这是我做的基本上是:
<script>
function LocalizationController($scope, $http) {
$scope.Regions = [
{ ID: "001", DESC: "DESC_1" },
{ ID: "002", DESC: "DESC_2" },
{ ID: "003", DESC: "DESC_3" },
{ ID: "004", DESC: "DESC_4" },
];
$scope.Region = "003";
$scope.init = function() {
$scope.Region = "003";
}
}
</script>
<div ng-controller="LocalizationController" ng-init="init();">
<input type="button" ng-click="Region='002'" value="test">
<select id="region" name="RegionCode" ng-model="Region">
<option ng-repeat="item in Regions" value="{{item.ID}}">{{item.DESC}}</option>
</select>
</div>
一切工作良好,选择是填补了我的项目, 但我想设置默认值。我设置我的对象模型是ng-model =“Region” - 我通过$ scope.Region =“003”将它的默认值设置到init()函数中。 当SELECT加载我不为什么,但dafault价值是第一位的“001”
我也试图通过 在这种情况下,SELECT得到正确的价值选择手动更改值。
任何人都可以解释为什么它不起作用?
我知道这是一个共同的问题,我已经看了那个, 任何解决方案建议使用NG-OPTION,该指令做工不错, 它可以填补我的选择与我的对象的数组,它可以选择默认值, 非常好,但它并没有解决我的问题,因为值到 选项元素id一个整数自动增量这不是我想要的。
在总结这样:
NG-REPEAT可以使SELECT我怎么想,但默认值不起作用 NG-OPTIONS可以使SELECT我怎么想,默认值的作品,但价值为选项 项目不能设置我想要的。
有什么建议吗?
在此先感谢
编辑
我发现了一个 “解决方案”
<div ng-controller="LocalizationController" EXCLUDE-ng-init="init();">
<select id="region" onload="alert();angular.element(this).scope().Region='002'" name="RegionCode" ng-model="Region">
<option ng-repeat="item in Regions" value="{{item.ID}}">{{item.DESC}}</option>
{{init();}}
</select>
</div>
我不喜欢那么多,但工作得很好: - NG- INIT = “INIT();”不起作用 - 如果我们排除初始化为ng-init的默认值,EXCLUDE-ng-init =“init();”并把它设置为初始化时,它可以工作
看看代码吹,我把{{init();}}后ng-repeat。 Everithing做工不错 {{item.DESC}} {{的init();}}
我不认为这是最好的解决办法,但作品, 1)我有我的元素 2的droopdown填充)我的清单中选项的价值是正确的,“001”,“002”,而不是一个愚蠢的自动增量值,这是无用的。
我希望能帮助别人...... 感谢大家试图帮助ME
为什么不用'ng-options'和'track by'表达式? –
使用NG-OPTIONS的主要问题是进入服务器端代码, 我不会得到我想要的正确值。 我们如何知道由ng-option加载的select标签的值是一个自动增量整数......并且这没有用.. 我的值是字母数字值,无论如何,我可能需要一个不是自动的值增量..所以NG-OPTIONS是不是一个好solusion NG-REPEAT是最灵活的解决方案,但我不知道为什么默认 值不能设置成NG-的init()函数: - \ 再次感谢 –