Backbone和document.title

Xer*_*rri 16 page-title backbone.js backbone-views

我正在使用backbone.js创建一个单页应用程序,并想知道处理更改标题的最佳方法.我想在视图中有一个'title'选项,并让路由器(不知何故)设置document.title.有没有人实现类似的东西?谢谢

Vin*_*lia 34

为什么不使用Backbone.js的性质.

首先,我不认为由路由器委托更新文档标题.特别是如果您正在使用较大的客户端应用程序,您希望保持简单并确保应用程序的每个部分都能完成特定任务.

路由器在那里委托路由,仅此而已.

我建议的是(取决于你如何初始化你的应用程序)来创建一个应用程序级别的事件聚合器.

var app = new Application();
app.eventAggregator = _.extend({}, Backbone.Events);
Run Code Online (Sandbox Code Playgroud)

并将事件绑定到您的应用程序:

app.eventAggregator.on('domchange:title', this.onDomChangeTitle, this);
Run Code Online (Sandbox Code Playgroud)

在Application构造中的位置

onDomChangeTitle: function (title) 
{
   $(document).attr('title', title);
}
Run Code Online (Sandbox Code Playgroud)

而现在,不必将其留给路由器以始终获取标题并确保getTitle每个视图中有方法,您可以 - 在视图内部,因此,任何视图 - 在渲染或初始化视图时触发以下事件:

app.eventAggregator.trigger('domchange:title', this.title);
Run Code Online (Sandbox Code Playgroud)

在我看来,它可以制作更清晰,更精简的代码,但话说回来,这只是一种观点.

  • 重新审视了这个并为应用程序实现了一个全局变量.在其中我存储了一个事件聚合器.视图将触发事件,聚合器将更改文档标题.作为旁注,可以在路由器上创建事件以侦听任何路由更改.这可能会触发document.title更改.http://stackoverflow.com/a/9521144 (2认同)

mid*_*dev 27

为什么你们都使用jQuery来改变文档的标题而不是使用纯Javascript?更快,更容易,更清洁......

document.title = 'new title';
Run Code Online (Sandbox Code Playgroud)

  • ... 你是认真的吗?来吧,这是我听过的最愚蠢的事情.jQuery是基于纯JS构建的,事实上,jQuery是一个用纯JS构建东西的框架.那么,使用纯JS的问题是什么? (16认同)
  • 人们过于依赖jQuery.到了现在,那些自称"js开发者"的人无法回想起如何使用本机JavaScript进行DOM操作 (9认同)