每次切换路由的时候需要加载页面模板,,和所对应的页面JS采用require.js,发现每个页面自己js通过avalon.define()定义的。。第一次渲染正常,下一次会报错error:[' + $id + '] had defined,代码如下define(["avalon"],function(avalon){return function(container,menu,param){var canSubMenus = avalon.define({$id:"can_subMenus",menu:{}});avalon.scan(container);};});如果把avalon.define写在外面。。。不是每次定义发现第一次正常。。第二次不会渲染,看了下代码发现vm && !vm.$element 这个限制。。vm依然存在于avalon.vmodels。上一次已经初始化好了,所以不会重新渲染。define(["avalon"],function(avalon){var canSubMenus = avalon.define({$id:"can_subMenus",menu:{}});return function(container,menu,param){avalon.scan(container);};});1.当页面重新进来的时候,如何让这个VM重新渲染一遍?2.当ms-controlll对应的真个元素移除的时候,其对应的VM有没有办法消除?3.目前本人这么处理的delete avalon.vmodels[$id],感觉太简单粗暴了有没有更好的办法。4.当从一个单页面切换的另一个单页面的时候,如何做好上一个页面的清理工作?5.avalon2这个框架。。适合单页面应用吗?6.以弃坑。。。投奔vue.js或者knockout.js。。。avalon2只提供创建方法,没有提供解绑方法。。。。这个有点坑,以后有机会在用avalon2,感觉整体还是不错的。嘿嘿。
添加回答
举报
0/150
提交
取消