javascript - 使用 ng-init 时复选框选择丢失

标签 javascript angularjs

我想根据某个值初始化(检查)我的复选框一次。因此我正在使用 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/

相关文章:

javascript - 如何使用 ng-model 双向绑定(bind)到类型 ="file"输入?

javascript - java中的加载效果

javascript - 使用 clickToggle 并在单击另一个元素时关闭元素

javascript - 如何使用 Angularjs 从 json 中删除字符串中的数字?

javascript - 将箭头样式函数转换为 "function"样式

javascript - AngularJS - 将字节数组内容显示为图像

javascript - 为什么 ng-app 不是 ng-module?

javascript - 推送 API : how can I check if the connection is established?

JavaScript 排序数组,但保持第二个数组同步

javascript - 在 Node.js 中构建多分支树时的性能问题