javascript - AngularJS ng-init 未全局初始化变量
问题描述
我正在使用 angularjs 指令的 ng-repeat 来加载其中存储有 JSON 值的数组。并且 value 也有子数组。
<div ng-repeat="data in MENULIST" > //MENULIST have array(Data)
在检查了一些条件后,比如(if:condition)。
<div ng-if="(data.SubMenu.length >0)" ng-init = "MENULIST = data.SubMenu"></div>
但是该分配或初始化并未全局完成到 MENULIST 它仅限于此 div Only。
打印两个主要数组元素后 ng-repeat 停止。
不打印数组元素的子元素。
实际上,我正在尝试在具有菜单和子菜单的侧边栏中制作树结构。
解决方案
除了双向绑定应该为你工作我相信调用一些函数是更直接的方式(特别是因为你可以在特定控制器的范围内创建这个函数 - 所以更容易理解这一点)
<div ng-if="(data.SubMenu.length >0)"
ng-init = "someController.setMenuList(data.SubMenu)">
</div>
另一个“角度方式”是data.Submenu.length
在组件的 JS 代码中添加显式观察者
$scope.$watch('data.Submenu.length', function (value, oldValue) {
if (!value && oldValue) {
// do your init
}
});
推荐阅读
- android - 长按RecyclerView时让ImageView出现,释放时消失?
- php - 你仍然可以使用 PDO::quote() 被黑客入侵吗?
- angular - Angular 材质 mat-menu 多次复制内部组件
- javascript - 如何在php中回显ajax变量?
- node.js - 带有 vhost 和 greenlock-express 的 NodeJS 子域
- javascript - 进行多个快速 API 调用而不发送垃圾邮件的最有效方法?
- scala - Spark 结构化流中的 LocalTableScan 有什么用?
- python - 无法使用终端将本地 Python 文件复制到 HIVE
- swift - 让编辑按钮到我需要的地方
- javascript - 合并手风琴菜单和jQuery轮播