我正在与AngularJS合作,我是如此新鲜。
我的目标是使用数据源中的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,该指令运作良好, 它可以用我的对象数组填充我的SELECT,它可以选择默认值, 非常好,但它并没有解决我的问题,因为价值进入了 option元素是一个整数自动增量,这不是我想要的。
总结如下:
NG-REPEAT可以渲染SELECT我想要的但是默认值不起作用 NG-OPTIONS可以像我想要的那样呈现SELECT,默认值可以工作,但值可以选择 item无法设置我想要的内容。
有什么建议吗?
提前致谢
修改
我找到了一个“解决方案”
<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();”并且当选项被填充时将initilize设置为
看看代码打击,我在ng-repeat之后放了{{init();}}。 Everithing很好用 {{item.DESC}} {{的init();}}
我认为不是最佳解决方案,但是Works, 1)我的元素下垂了 2)我的列表中选项的值是CORRECT,“001”,“002”,而不是一个无用的愚蠢的自动增量值。
我希望能帮助别人...... 感谢每个人都试图帮助我
答案 0 :(得分:2)
只需使用ng-options
<select id="region" name="RegionCode" ng-model="Region" ng-options="option.ID as option.DESC for option in Regions">
并且
$scope.init = function () {
$scope.Region = $scope.Regions[2];
}
当您在使用ng-options
时检查选择框时,选项的值将类似于0,1,2,3 ..,这就是您所说的自动增量整数。但不要担心。它只是出现在那里的价值,但是一旦你张贴你的表格,你将获得正确的价值,在你的情况下ID
。
答案 1 :(得分:0)
使用 ng-options
在这种情况下,如果你玩对象(不是单个值),它应该是
$scope.init = function () {
$scope.Region = $scope.Regions[2];
}