ng-repeat上的Init复选框angularjs

时间:2017-01-18 08:43:50

标签: javascript jquery angularjs checkbox ng-init

我遇到了这种情况:

<md-subheader class="md-no-sticky">
            <span data-ng-if="itemSelected == undefined || itemSelected == ''">Choose</span>
            <span data-ng-if="itemSelected != '' || itemSelected != undefined">{{itemSelected}}</span>
        </md-subheader>
        <md-list-item ng-repeat="item in items">
            <p> {{item.name}} </p>
            <md-checkbox class="md-secondary" ng-init="itemSelection" ng-model="itemSelection" ng-change="changeItemSelected(item)"></md-checkbox>
        </md-list-item>

我已经在其中获得了您可以使用复选框选择的项目列表。 ng-change的功能如下:

$scope.changeItemSelected = function(item) {
        $scope.itemSelected = item.name;
    };

当控制器启动时,我会调用之前检查过数据的服务。因此,如果数据未定义(这意味着在检查某些内容之前),我将此itemSelection设置为true。如您所见,此变量用于ng-init。它起作用了,但不是太多。通过这种方式,它选择所有复选框而不是我想要的复选框。我无法重现初始化调用。顺便说一下,我创造了这种情况的jsfiddle http://jsfiddle.net/2f6qscrp/225/ 试着想一想,当jsfiddle开始时,它会激活对服务器的调用,以获得之前选择的项目之一。例如,我想选择列表的第三项。因为服务器返回第三个数据:

{"data":{orange},"meta":{"code":200}}

类似的东西

1 个答案:

答案 0 :(得分:1)

我在checkItem()打了一个函数ng-init

<md-checkbox class="md-secondary" ng-init="checkItem(item)" 
                                  ng-model="item.checked"                        
                                  ng-change="changeItemSelected(item)">
</md-checkbox>

此函数检查复选框名称是否与从服务器返回的对象相对应:

$scope.srvValue = { // Value from your server
    "data": "orange",
    "meta": {"code": 200}
};

$scope.checkItem = function(item) {
    if (item.name == $scope.srvValue.data) { // It matchs!
        item.checked = true;
        $scope.changeItemSelected(item);
    }
    else item.checked = false; // It does not
};

JSFiddle demo