我遇到了这种情况:
<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}}
类似的东西
答案 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
};