【问题标题】:Ember.js After refresh page data disappearEmber.js 刷新后页面数据消失
【发布时间】:2014-03-27 17:55:27
【问题描述】:

我在使用 ember 时遇到了一些基本问题。

这里是应用程序:http://emberjs.jsbin.com/qivamuzu/5(点击测试 - 像魅力一样工作,因为模型在内存中 - 加载到索引页面中)

但是当您直接尝试页面#test http://emberjs.jsbin.com/qivamuzu/5#/test 时,所有数据都会消失(这很糟糕 - 不会触发索引路由和加载模型)。我关注了这个问题Why isn't my ember.js route model being called?,但对我没有帮助。

我需要在其他模板中使用带有模型的模板 - 我使用 {{render index}} 但我不确定要使用什么以及如何使用。请帮助我,我被卡住了。

【问题讨论】:

    标签: templates ember.js


    【解决方案1】:

    我有点不清楚你到底想做什么。

    如果您只是尝试将相同的模型数据与不同的路由(和模板)一起使用,那么您可以在路由定义中明确地将模型数据设置为相同:

    App = Ember.Application.create();
    
    App.Router.map(function() {
       this.route('test');
    });
    
    var myModelData = ['red', 'yellow', 'blue'];
    
    App.IndexRoute = Ember.Route.extend({
      model : function(){
        return myModelData;
      }  
    });
    
    App.TestRoute = Ember.Route.extend({
      model : function(){
        return myModelData;
      }   
    });
    

    这是一个有效的 JSBin 示例:

    http://emberjs.jsbin.com/qivamuzu/8/edit

    编辑:可能有帮助的其他信息

    好的,再试一次 =) 当您直接导航到 test 页面时,没有数据,因为 TestRoute 正在使用尚未加载的 IndexRoute 中的模型数据。您可以做的是通过从 ApplicationRoute 初始化它来强制创建 IndexController 和模型,当您第一次转到应用程序中的任何路由时总是会调用它。

    首先你必须生成控制器,因为它还不存在。

    this.generateController('index');
    

    然后你可以获取控制器并设置它的模型数据:

    this.controllerFor('index').set('model', ['red','green','blue']);
    

    这是一个有效的小提琴,这次我实际测试了它,以确保当您直接访问 #/test 时它可以正常工作。我从之前的示例中删除了额外的路线和实际上不需要的东西。

    http://emberjs.jsbin.com/qivamuzu/11#/test

    【讨论】:

    • 谢谢,这正是我想要的,但我认为 ember 有另一种方法可以做到这一点,但这已经足够了。
    • 我添加了另一个使用 {{render}} 帮助器的示例。我不确定这是否是您所追求的,因为这对我来说似乎是一个奇怪的用例,但也许它会有所帮助!
    • 嗨,这正是我想要的,我使用渲染是因为我想在更多模板中渲染带有模型的模板,比如带有来自服务器的 json 数据的组件。您的第二个示例与我的示例执行相同的问题 - 当您直接尝试测试链接 emberjs.jsbin.com/qivamuzu/9#/test 时,它不会渲染模型。
    • 哈,你说得对。当您直接测试时,索引路由尚未加载,因此测试路由没有模型数据可显示。我用我认为可行的解决方案再次更新了答案。让我知道它是否满足您的需求。
    • 最后一件事-我如何使用this.controllerFor('index').set('model', ['red','green','blue']); 实现DRY 代码如何更改['red','green','blue'] 以从测试路线加载模型,希望你明白我想要什么:)
    猜你喜欢
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2016-06-22
    • 2023-03-20
    • 2021-07-03
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多