【问题标题】:ember-cli won't render from my model from the data storeember-cli 不会从我的模型从数据存储中渲染
【发布时间】:2014-10-03 01:48:23
【问题描述】:

我正在使用带有 ember 数据的 ember cli,并且一直在拼凑信息,但它仍然无法正常工作。这都涉及到 Home 模型、路由和模板。我觉得我很接近但仍然没有雪茄。我把除了标题之外的所有东西都拿出来简化它。根据我读过的文档,一切都应该是这样。

这是我的 app.js

import Ember from 'ember';
import Resolver from 'ember/resolver';
import loadInitializers from 'ember/load-initializers';
import config from './config/environment';

Ember.MODEL_FACTORY_INJECTIONS = true;

var App = Ember.Application.extend({
  modulePrefix: config.modulePrefix,
  podModulePrefix: config.podModulePrefix,
  Resolver: Resolver
});

loadInitializers(App, config.modulePrefix);

export default App;

这是我的家庭模型:

 import DS from 'ember-data';

    export default DS.Model.extend({
    title         : DS.attr('string'),
    });

    Home.reopenClass({
    FIXTURES :[
    {
     id: 1,
     title: 'Sponge B',
    }, 

    {
    id: 2,
    title: 'John David',
    }, 

    ]
    });

这是我的回家路线:

    import Ember from 'ember';
    //import DS from 'ember-data';

    export default  Ember.Route.extend({
         model: function(){
            return this.store.find('Home');
        },
    });

这是我的主页模板:

   <div id="home"> 
    {{#each}}
    <p>{{title}}</p>
    {{/each}}
   </div>
   {{outlet}}

有人可以帮帮我吗?

我认为这与我的模型挂钩有关。 这也可能是控制器问题。我生成了一个基本控制器。我应该生成一个 arrayController 吗?保存后的主路由给我这个错误信息: models/home.js:第 9 行,第 1 列,'Home' 未定义。但是当我定义它时仍然存在问题。我是否应该添加一个名为 adapters 的文件夹,然后在其中放入一个名为 application.js 的文件,然后广告 export default DS.FixtureAdapter.extend(); .但是当我这样做时,它告诉我 DS 没有定义

【问题讨论】:

    标签: ember.js ember-data ember-cli


    【解决方案1】:

    您似乎正在将模型明确导出为 Home,然后您尝试使用不同字母大小写的 find('home')

    Ember 不会自动为您解决问题。如果你想使用Home作为模型,你需要每次都以同样的方式调用它。

    如果你想从路由中调用它,你甚至可能需要import Home from '../models/model-file';..

    一个更容易尝试的方法是使用隐式export default Ember.Model.extend({}) 并让 ember-cli 使用您的文件名解析该类。

    http://www.ember-cli.com/#using-modules

    【讨论】:

    • 在我阅读过的所有文档以及我编写的其他程序中,find 方法中的任何内容都没有大写。如果您的灯具是 Home.Products.FIXTURES。你找不到这样的产品 find('Products') 它是 find('products')
    【解决方案2】:

    您的模板似乎是问题所在。您引用了一个不存在的 item 属性:

    <div id="home">
        {{#each}}
        <p>{{title}}</p>
        {{/each}}
    </div>
    

    此外,您的模型存在一些语法问题。试试这个:

    import DS from 'ember-data';
    
    var Home= DS.Model.extend({
      title         : DS.attr('string'),
    });
    
    Home.reopenClass({
      FIXTURES :[
        {
         id: 1,
         title: 'Sponge B',
        }, 
    
        {
        id: 2,
        title: 'John David',
        }, 
      ]
    });
    export default Home;
    

    【讨论】:

    • 那是一个错字。即使我改变了这一点。还是不行
    • 您也应该对模型进行更改。运行代码时,您应该在控制台中看到错误,例如 ReferenceError: Home is not defined
    【解决方案3】:

    对于 Fixture Adapter,您将 application.js 添加到适配器文件夹并从“ember-data”导入 DS 是正确的。

    在 Steve H 的家庭模型示例中,FIXTURES 的定义也不正确。尝试使用: 主页.FIXTURES = [ ... ];

    确保路径正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多