簡體   English   中英

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

在其中,我具有可以使用復選框選擇的項目列表。 ng-change的功能是這樣的:

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

控制器啟動時,我致電了一個服務,該服務之前已檢查了數據。 因此,如果數據不是不確定的(這意味着在檢查之前),則將此itemSelection設置為true。 如您所見,此變量用於ng-init。 它正在工作,但不是太多。 這樣,它選擇了所有復選框,而不是我想要的復選框。 我無法重現init調用。 我通過這種方式通過http://jsfiddle.net/2f6qscrp/225/創建了一個jsfiddle,嘗試認為當jsfiddle啟動時,它會觸發對服務器的調用以獲取之前選擇的項之一。 例如,我要選擇列表的第三項。 因為服務器返回的第三個數據是這樣的:

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

這樣的東西

在這里,我在ng-init調用了一個checkItem()函數:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM