如何在每次索引时执行代码?

时间:2013-10-12 22:07:12

标签: ember.js

如果访问/路由,我怎么能执行一些代码?

我现在有这个:

App.indexController = Ember.Controller.extend({
    showFront: function () {
        alert("zzz");
    }
});

但我被困住了。我怎样才能让它真正起作用?

2 个答案:

答案 0 :(得分:1)

首先需要定义一个路由,然后在其上调用一个函数。

在这里阅读:

http://emberjs.com/guides/routing/defining-your-routes/

答案 1 :(得分:1)

您可以使用beforeModelsetupController挂钩在加载路由时执行代码。

App.Router.map(function(){
  this.resource('posts', { path: '/posts' }, function() {});
});

App.PostsRoute = Ember.Route.extend({
  // http://emberjs.com/api/classes/Ember.Route.html#method_beforeModel
  beforeModel: function() {
    console.log("beforeModel fired");
  },

  // http://emberjs.com/api/classes/Ember.Route.html#method_setupController
  setupController: function(controller, model){
    this._super(controller, model);
    console.log("setupController fired");
  },

  model: function(){
    // resolve the promise after a short delay
    return Ember.RSVP.Promise(function(resolve, reject){
      setTimeout(function(){
        resolve(true);
      }, 2000);
    });
  }
});
顾名思义,

beforeModel将在加载模型之前触发,并且在模型加载后setupController将触发。 JSBin中的示例使用延迟加载模型来演示差异。

此示例显示了用于App.Post路由的挂钩,但如果您希望在加载默认路由时执行代码,则可以在App.ApplicationRoute上使用此挂接。

JSBin example