我想根据某个值初始化(检查)我的复选框一次。因此我正在使用 ng-init 但问题是当我加载另一个模板并再次返回到前一个模板时我认为 ng-init 被调用并且我松开那些新的复选框选择。
代码:
$scope.lst = [
{item:'banana', selected:true},
{item: 'apple', selected:false},
{item:'milk', selected:false},
{item: 'tomato', selected:false},
{item:'juice', selected:false}
]
});
<div ng-repeat="item in lst">
<input ng-model="item.parentSelected" ng-init="item.parentSelected=item.selected" type="checkbox">
</div>
因此,默认情况下,我想将香蕉显示为选定状态,但问题是当用户选择苹果和牛奶时,我加载另一个模板,然后用户返回到同一页面(我再次加载第一个模板),所以我猜 ng-init 会被调用我再次失去了苹果和牛奶的选择。
当我删除 ng-init 时,我就会选择苹果和牛奶。
更新:我猜问题出在 ng-init 上,因为 ng-model 与 ParentSelected 绑定(bind),而对于苹果和牛奶,我选择为 false
所以当我选择苹果和牛奶,然后加载另一个模板,然后再次加载以前的模板 ng-init 仅选择香蕉,因为 ng init="item.parentSelected=item.selected"
当我的模板加载时,如何默认选择苹果并保留其他选择?
最佳答案
它会丢失,因为当您再次打开该 View 时, Controller 会再次初始化,并且之前的选择会丢失,因为 View 再次从零初始化。
定义一个服务来存储您的选择,将其注入(inject) Controller 中并在服务内存储所选值。 然后在 Controller 内定义一个从 ng-init 调用的函数。在此函数内检查是否已存储值:如果是,则将该值分配给存储的值,否则预选择第一个条目。
希望这是有道理的
关于javascript - 使用 ng-init 时复选框选择丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45795379/