AngularJS ng-repeat默认值不起作用

时间:2014-01-30 10:14:04

标签: angularjs angularjs-ng-repeat ng-options

我正在与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”,而不是一个无用的愚蠢的自动增量值。

我希望能帮助别人...... 感谢每个人都试图帮助我


2 个答案:

答案 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];
}