【问题标题】:model not getting set while using render helper in ember -cli在 ember -cli 中使用渲染助手时未设置模型
【发布时间】:2014-09-29 10:53:07
【问题描述】:


我正在使用 ember-cli,并且有一个控制器使用渲染助手,因此没有路由。示例

{{render 'ref-type' ref-type}}

现在在控制器 ref-type 中

export default Ember.Controller.extend({
    actions{
        isShown: function() {
            var m = this.get('model'); //here model is undefined can i know why?
        }
    }
});

模型参考类型是

export default Ember.Object.extend({
    getData: function(){
        return 'xyz';   //data is returned hre
    }
});

为什么我无法访问控制器中的模型。

添加原始 JSBin 示例 JSBIN 模型应该始终是 DS.Model.extend 吗?我不这么认为。
另外,我使用“sample”作为名称,而不是 ref-type,以便更容易理解

【问题讨论】:

  • 能否提供完整的 JSBin 示例?
  • 这非常困难,因为我使用的是 ember cli 而不仅仅是 ember js
  • 我认为这不是 ember-cli 问题。您在哪里初始化 {{render 'ref-type' ref-type}} 中引用的模型
  • 它绝对不是 ember-cli 问题。我在 ember-cli 中有我的代码,所以很难将它放在 jsbin 中。 {{render 'ref-type' ref-type}} 中的调用本身应该进行赋值。 ember-cli 中没有单独的初始化。在构建它时要小心
  • @Wishy 实际上,在使用 ember cli 时制作一个小的 JSBin 来显示您的问题并不难。只需遵循旧的命名约定。现在不可能说出你的问题是什么。您有一个名为 getData 的方法,但没有调用此方法。您调用了 this.get('model') 但没有显示路线。这个模型属性在哪里设置?是在另一条路线上吗?我们需要查看该路线,然后查看您是否正确设置了模型。谁在调用 isShown?什么是“参考类型”模板?什么是 ref 类型的对象?它是在哪里创建的?

标签: ember.js model controller render ember-cli


【解决方案1】:

你永远不会初始化你的模型。根据您的 JSBin 示例,您的 TodosController 中必须有名为 sample 的属性。 ember 不会自行创建对象。我已经编辑了你的JSBin。这可能不是最好的方法,但我试图解释发生了什么。

如果您将日志 {{log sample}} 放在您的 render 助手上方,您会注意到您的示例属性已经未定义。

【讨论】:

  • 啊,对,你确定是这样吗???你是说 {{render "sample" sample}} 就像 {{sample-component sampleVal = sample}} 其中 sample 的值是来自模型或控制器的当前上下文?我认为 {{render "sample" sample}} 中的模型示例不是特定于上下文的。我认为它只是加载了一个示例模型,而不是从当前上下文中获取它。顺便说一句,你确定吗?
  • 另外你知道我如何在不涉及路由但使用 {{render}} 的情况下初始化模型吗?
  • 是的,ember 无法为 {[render "sample" sample}} 创建模型,您应该提供该模型。我不知道您的应用程序逻辑,但由于我的 JSBin 示例,我建议您在 TodosRoute 的 setupController 挂钩中创建该“示例”模型。 setupController: function(controller, model) { this._super(controller, model); controller.set('sample', Todos.sample.create()); }
猜你喜欢
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 2015-02-18
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多