首页 > 解决方案 > 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 停止。

不打印数组元素的子元素。

实际上,我正在尝试在具有菜单和子菜单的侧边栏中制作树结构。

标签: javascriptangularjs

解决方案


除了双向绑定应该为你工作我相信调用一些函数是更直接的方式(特别是因为你可以在特定控制器的范围内创建这个函数 - 所以更容易理解这一点)

<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
    }
});

推荐阅读