Backbone中父子view之间的值传递

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

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

一、如何传值

项目中利用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的initial(参数2)中可以接收参数1,即参数1和参数2是对等的。

此外,因为是在父view中new的子view,可以在父view可以对子view进行操作。

二、细节问题

通过一我们可以很方便在子view中接收父view的数据,但是这里有个细节问题。我曾在这里困惑好久。参数最好不要传父view,即父view的this或者view默认的事件函数等。因为这样做,参数会将子view默认的事件函数给覆盖,导致子view相同的事件函数失效。简单来讲,如果父子view都存在的,比如render,events或者其他定义相同的值或者是自定义函数不能作为参数传递。

时间: 2024-10-13 23:23:55

Backbone中父子view之间的值传递的相关文章

UI中的界面之间的值传递 <二>

从后往前传 —— 代理传值 代理传值 (代理是前一个界面, 协议在后一个界面写, 后一个界面是委托方, 前一个界面是被委托方.) 一 : 在后一个界面定义协议 (定义一个用于传值的方法, 而且方法必须要有参数, 参数类型要与所传数据的类型保持一致) 二 : 在后一个界面定义代理属性, 用来保存代理对象. 三 : 设置后一个界面的代理 -- 在前一个界面进入后一个界面之前, 设置前一个界面为后一个界面的代理. 四 : 前一个界面服从协议. 五 : 前一个界面实现协议中的方法. 六 : 后一个界面让

UI中的界面之间的值传递 <一>

一. 从前往后传 —— 属性传值 1< 在后面一个界面定义属性(属性的类型要和传输的数据的数据类型一致). 2< 在从前一个界面进入到下一个界面之前, 将数据传给下一个界面. 例如有两个视图控制器: FirstViewController 和 SecondViewController 在这两个视图控制器中设置一个textField 和 label, 并且把FirstViewController的view上的textField上输入的text显示到SecondViewController的lab

ThreadLocal父子线程之间的数据传递问题

一.问题的提出 在系统开发过程中常使用ThreadLocal进行传递日志的RequestId,由此来获取整条请求链路.然而当线程中开启了其他的线程,此时ThreadLocal里面的数据将会出现无法获取/读取错乱,甚至还可能会存在内存泄漏等问题,下面用代码来演示一下这个问题. 普通代码示例: 并行流代码示例: 二.问题的解决 ThreadLocal的子类InheritableThreadLocal其实已经帮我们处理好了,通过这个组件可以实现父子线程之间的数据传递,在子线程中能够父线程中的Threa

通过$broadcast或$emit在子级和父级controller之间进行值传递

1 通过$broadcast或$emit在controller之间进行值传递,不过这些controller必须是子级或者父级关系, 2 $emit只能向父级parent controller传递事件event与数据data,$broadcast只能向子级child controller传递event与data,$on用于接收event与data. 3 <script> 4 var myapp=angular.module('myapp',[]); 5 myapp.controller('Sel

ASP.NET MVC3中Controller与View之间的数据传递总结

</pre>在ASP.NET MVC<span style="font-family:宋体">中,经常会在</span>Controller<span style="font-family:宋体">与</span>View<span style="font-family:宋体">之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨:&

ASP.NET MVC3中Controller与View之间的数据传递

在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: [csharp] view plain copy print? ViewData["Message_ViewData"] = " Hello ViewData!"; Vi

Asp.net MVC中 Controller 与 View之间的数据传递

在ASP.NET MVC中,经常会在Controller与View之间传递数据 1.Controller向View中传递数据 (1)使用ViewData["user"] (2)使用ViewBag.user (3)使用TempData["user"] (4)使用Model(强类型) 区别: (1)ViewData与TempData方式是弱类型的方式传递数据,而使用Model传递数据是强类型的方式. (2)ViewData与TempData是完全不同的数据类型,View

ASP.NET MVC中Controller与View之间的数据传递总结

在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: Ø Controller向View传递数据 Ø View向Controller传递数据 一.Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData[“Message”] = “Hello word!”; 然后在View中读取Controller中

angular view之间的数据传递

之前写过一篇backbone view之间的传递,由于现在在用angular搞开发,现在也来总结一下.在angular 传递数据通俗的讲叫做 广播 ,在一些文章中,也叫做事件的发布与订阅,在angular中通过 发布与订阅制定了数据的传递,使用时,在出发点广播事件,这个事件后面的参数是传递的数据,在适当的位置去进行接收,具体到开发中,对应着$scope和$rootScope的$emit.$broadcast和$on方法.首先了解一下概念: 1.$scope与$scope之间的关系,$scope与