angularJs ui-router路由之多视图实现菜单缓存切换

angularJs ui-router路由之多视图实现菜单缓存切换,第1张

**

**

一个模板中存在多个ui-view,每个ui-view都存在唯一的名称作为标识,通过v-show来判断当前的ui-view是否显示,实现如下图效果

以上可以实现基本的菜单切换,但是需要注意的是:

1.每个页面模块的controller的命名不能相同,否则会出现调用方法的混乱,可能会进入到另一个同名的controller中调用方法;

2.当使用此方法对页面进行缓存,如果打开多个模块用到websocket接受服务器消息时,不能使用WebSocket.onmessage监听和接受服务器消息,否则可能会调用其他controller中WebSocket.onmessage,当前的页面模块就会监听不到服务器消息,这时我们可以使用

socket.addEventListener('message', function (event) {

console.log('Message from server ', event.data)

})

进行服务器消息的监听,并在方法体内做判断,是否是当前页面需要的。

3.如果某个页面的d出框用到了路由调用则d框中的页面不会显示,所以建议不要在d框中直接调用路由加载页面,或者可以在index.jsp中:

4.如果几个模块views里面的name一样,则会出现加载的页面重复的问题;

5.style样式:如果多个模块存在相同名称的选择器,则样式会冲突;

还有些问题会在后面慢慢补充。

6.页面打开太多会出现卡顿现象

7.一定要引入 <script src="vendor/angular/angular-ui-router-ext/ct-ui-router-extras.min.js"></script>,否则会出现ui-view没有缓存的情况

以通过在Provider中返回一个构造函数,并在构造函数中设计一个缓存字段,在末尾将引出这种做法。

首先自定义一个directive,用来点击按钮改变一个scope变量值。

angular

.module('app',[])

.directive('updater', function(){

reutrn {

scope: {

user: '='

},

template: '<button>Change User.data to whaaaat?</button>',

link: function(scope, element, attrs){

element.on('click', function(){

scope.user.data = 'whaaaat?'

scope.$apply()

})

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11927628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存