【发布时间】:2013-11-25 23:34:33
【问题描述】:
假设我有以下 Backbone 视图,它加载两个链接,一个带有锚文本“test1”,另一个带有锚文本“test2”。
我绑定了一个点击事件,我得到了被点击链接的 HTML 并将其存储在 clickedHtml 变量中。
现在,这个视图由 Backbone 路由器加载。
当用户单击两个链接(test1 或 test2)中的任何一个时,路由器将加载另一个名为“main”的视图。
现在,如何将“clickedHtml”变量传递给该视图?
我应该使用 LocalStorage 吗?
我应该像 window.clickedHtml 一样全局声明它吗?
有没有更好的办法?
泰!
// file: views/test.js
define([
'jquery',
'underscore',
'backbone'
], function($, _, Backbone) {
var Test = Backbone.View.extend({
el : '.test',
initialize : function () {
var that = this;
that.$el.html('<a href="#/main">test1</a><br /><a href="#/main">test2</a>');
},
events : {
'click .test a' : 'click'
},
click : function (e) {
var clickedHtml = $(e.target).html();
}
return Test;
});
这是我的路由器:
// file: router.js
define([
'jquery',
'underscore',
'backbone',
'views/test',
'views/main'
], function ($, _, Backbone, Test, Main) {
var Router = Backbone.Router.extend({
routes: {
'' : 'home',
'test' : 'test'
}
});
var initialize = function () {
var router = new Router();
router.on('route:home', function () {
var main = new Main();
});
router.on('route:test', function () {
var test = new Test();
});
Backbone.history.start();
}
return {
initialize : initialize
}
});
【问题讨论】:
-
您可以将两个视图都放在一个视图中。然后你就可以访问主视图中两个子视图的所有变量了。
标签: javascript jquery backbone.js