场景用页面的切换都是在每个场景动作结束后自动切换到另一个场景。一般来说在代码设计上尽量不要让不相关的代码耦合,所以场景之间尽量不要直接调用另外一个场景代码。常规的来说,一般抽出到更上层通信了,提供一个统一的接口让应用的不同部分进行通信
这里具体看下右边代码区域christmas.js中的代码
页面类pageA、pageB、pageC都提供一个完成的回调函数,常规来说,因为有依赖所以就会有回调嵌套的问题。对了,可能想起来另一个解决方法 Deferred了,运用的思路其实差不多,但是这里更为直接的我引入了Observer模式
new pageA(function() { new pageB(function() { new pageC(function() { //执行下一个 }) }) })
给每个场景对象订阅一个"完成"的事件,然后在每个场景运行结束发派发这个"完成事件"
订阅场景pageA完成事件
observer.subscribe("completeA", function() { //做一些是 })
触发场景pageA完成事件
new pageA(function() { observer.publish("completeA"); //触发 })
这里其实是一对一的关系,效果还不是很明显,如果是对一多的关系,比如场景完成后,我们可以注册很多的事件
总的来说,观察者模式所做的工作就是在解耦,让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响到另一边的变化。
christmas.js中,通过观察者模式的处理,切面的切换都是通过事件通知。
请参考页面A切换到页面B的代码,触发B页面的代码
然后在代码56行处填写页面B切换到页面C的代码,然后触发pageC页面
observer.subscribe("completeB", function() {
changePage($pageC, "effect-in", function() {
observer.publish("pageC");
})
})
请验证,完成请求
由于请求次数过多,请先验证,完成再次请求
打开微信扫码自动绑定
绑定后可得到
使用 Ctrl+D 可将课程添加到书签
举报
实战
实战
实战
实战
实战