canjs - js是否延迟路由匹配/手动触发调度?

  显示原文与译文双语对照的内容
65 2

我有一个类似这样的控件:

  1. 呈现加载的异步视图。
  2. 视图的数据也异步加载。
  3. 侦听路由更改。它的中一个路由处理程序显示一个模态,它的中包含步骤 2中加载的模型的详细信息。

问题是,用户可以能获得一个指向模型的路由的页面,当控件初始化时没有加载模式。


can.Control({
 init: function() {
 can.view('file.ejs', {pages: app.Model.Page.findAll()}, function(frag){
//inject the fragment into DOM
 });
 },
 'page/:id/comments route': function() {
//find the page in the list of models loaded, than display the modal
 }
});

如何再次触发distcher或者使控制器在呈现视图后通过路由?

时间: 原作者:

149 5

如果存储to返回的延迟时间,你可以在路由中使用它来确定它的加载时间。

http://canjs.com/docs/can.when.html

下面是将 this.pages 中的页存储在控件中的示例:
( 看起来不是很好,但很容易理解)


can.Control({
 init: function() {
 this.pages = app.Model.Page.findAll()
 can.view('file.ejs', {pages: pages}, function(frag){
//inject the fragment into DOM
 });
 },
 'page/:id/comments route': function() {
 can.when(this.pages).then(function(pages){
//find the page in the list of models loaded, than display the modal
 })
 }
});

...