javascript - avalon2 单页面时候切换页面问题

 江韦亭君733 发布于 2022-11-15 09:50

每次切换路由的时候需要加载页面模板,,和所对应的页面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,感觉整体还是不错的。嘿嘿。

2 个回答
  • 我做一个fast start吧

    https://github.com/RubyLouvre...

    2022-11-15 09:53 回答
  • 1.delete avalon.vmodels[$id],每次在主页面把非必要的请一次。

    2.if (avalon.vmodels[$id]) {

      throw Error('error:[' + $id + '] had defined!')

    }
    在Avalon.js中屏蔽掉这段代码。否则在第二次调用的时候。。不会再初始化这个ms-controller,单页面的情况下我是这么解决的。

    3.有入坑的小伙伴。。。。可以教育一下怎么解决的。。。。感觉avalon1还支持。。到了avalon2.。感觉对单页面支持的不咋地。

    2022-11-15 09:53 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有