在 ng-repeat 上初始化复选框 angularjs

Init checkbox angularjs on ng-repeat

我遇到了这种情况:

<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>

我在其中列出了您可以 select 使用复选框的项目。 ng-change 上的函数是这样的:

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

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

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

类似的东西

这里我有一个函数 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