Backbone中父子view之间的值传递

       backbone中,使用最多的莫过于在view中进行操做,如模板的渲染以及事件函数的定义。为了提升代码的可维护性,通常地咱们会写多个视图即view,将界面按照功能的不一样进行模块化划分,模块与view一一对应。模块化

       首先,咱们会定义一个父view,在view中控制不一样子view的渲染,子view之间尽可能不产生联系。这样,代码之间的耦合度会下降不少,模块的功能明确化,同时下降了开发的难度。笔者最近在项目中遇到父子view传值问题,学习到了一个知识点,比较简单易懂。主要想分享两个内容:1.父子view是如何传值的。2.父子view传值要注意什么。以我实际的项目为例进行说明。函数

1、如何传值学习

       项目中利用require.js按需加载js文件,大大地节约了资源。首先在global.js中申明子view的路径,方便在父view中进行引用。熟悉require.js的读者都知道,require.js是经过define进行函数的定义以及相关依赖模块的引入,这里没必要细说,假设参数定义为childrenView。在父view中new一个childrenView对象,这样咱们经过自定义事件进行操做就行。此时new的对象包含view的render方法等。若是在new childrenView(参数1)时,参数1能够为空,此时父子view之间没有值传递;当参数2存在时,父子view存在值传递,参数1是父view传递给子view的。在子view的initialize(参数2)中能够接收参数1,即参数1和参数2是对等的。ui

       此外,由于是在父view中new的子view,能够在父view能够对子view进行操做。this

2、细节问题spa

       经过一咱们能够很方便在子view中接收父view的数据,可是这里有个细节问题。我曾在这里困惑很久。参数最好不要传父view,即父view的this或者view默认的事件函数等。由于这样作,参数会将子view默认的事件函数给覆盖,致使子view相同的事件函数失效。简单来说,若是父子view都存在的,好比render,events或者其余定义相同的值或者是自定义函数不能做为参数传递。对象

相关文章
相关标签/搜索