使用路线

时间:2017-07-30 21:44:37

标签: javascript ember.js

我对使用ember-cli-document-title插件从路由器设置title元素感到有些困惑。如果我传递一个函数或字符串,它的工作正常,但我试图通过modelFor访问当前模型。

当页面首次加载时它起作用,但是当我转换到另一个路径时,它会变为“未定义”。如果我转到之前访问过的路线,则会填充该值。看来,在显示时,该值尚未填充。在尝试将其分配给标题之前,如何等待DS在模型实例上具有属性?

我曾尝试在我的模型上调用reload(),然后返回结果承诺,ember-cli-document-title似乎不喜欢title属性中的承诺。

export default Ember.Route.extend({
  title: function() {
    let model = this.modelFor(this.routeName)
    let title = model.get('title')
    return `${title} | Some More Text`
  }
}

更新:刚刚找到一个重要的细节

我的应用程序做的第一件事就是从服务器获取一堆帖子的索引。为了提高性能,某些属性未包含在index中,但属于show操作。

我意识到这个问题与这些模型部分加载的事实有关。似乎ember-cli-document-title会立即尝试更改标题而不等待加载其他属性。

1 个答案:

答案 0 :(得分:0)

我认为你应该使用titleToken。默认titleToken是您的模型。

titleToken以数组形式传递给title函数。所以你可以这样做:

export default Ember.Route.extend({
  title([model]) {
    const title = model.get('title');
    return `${title} | Some More Text`;
  }
}