javascript - 在 EmberJS 中构建单一模型

标签 javascript ember.js ember-data

定义模型和路由以构建可用作应用程序数据的模型的正确方法是什么。

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

App.MainRoute = Ember.Route.extend({
    model:function(){
        return App.Main.find();
    }
});

App.Main = DS.Model.extend({
    appName:DS.attr('string')
});


App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.RESTAdapter.create({
    namespace: 'api/v1'
  })
});

这最终会调用 api/v1/mains。但我希望它调用 api/v1/main 返回应用程序数据,它是一个像

这样的对象
{
    "appName":"MyApp",
    "lastLogin": "Sat May 11 2013 11:20:03 GMT+0530",
    ...
}

我知道配置复数,但我认为这不是正确的做法。 任何帮助,将不胜感激。提前致谢。

编辑:配置复数时它不是渲染模板

App = Ember.Application.create();

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

App.MainRoute = Ember.Route.extend({
    model:function(){
        return App.Main.find();
    }
});


DS.RESTAdapter.configure("plurals", {
  main: "main"
});

App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.RESTAdapter.create({
    namespace: 'api/v1'
  })
});

App.Main = DS.Model.extend({
    "appName":DS.attr('string')
});

从服务器接收到的json

{
    "main": {
        "app_name": "My App"
    }
}

模板:

<script type="text/x-handlebars" data-template-name="main">
    This is {{appName}}
</script>

最佳答案

最初的问题在于您调用 App.Main.find() 这将自动导致为 创建一个 Ember.Arraycontroller >content 你的 MainController (根据你的路由命名自动生成)。这也会调用请求您模型的复数版本。

因此,通过将复数形式修改为指向/main,您将检索信息,如您所示,但它仍呈现在 Ember.ArrayController 中。因此,要查看此内容,您的模板需要通过 {{#each}} 运行它。因此,如果您将其模板化,它可能会起作用:

<script type="text/x-handlebars" data-template-name="main">
  {{#each main}}
    This is {{appName}}
  {{/each}}
</script>

您的解决方案是通过解析 find() 中的键来识别单个记录,这是正确的,因为(正如您已经正确说明的那样)调用创建单例 (Ember. ObjectController) 然后可以直接询问。

关于javascript - 在 EmberJS 中构建单一模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16494235/

相关文章:

javascript - Karma 覆盖同一位置的文件和测试

ember.js - Ember 2.8 : Sending an action from a component to the controller

javascript - 获得第一个结果的 Ember-Data objectAt() 不起作用

javascript - Ember 模型回滚将 View 重置为之前的状态

javascript - 有没有办法通过Javascript执行MATLAB脚本?

javascript - cytoscape.js 复合节点忽略布局?

ember.js - 带有 Ember 数据的 PATCH

ember.js - 嵌套 View 不更新 Ember.js

javascript - Ember 数据 EmbeddedRecordMixin

javascript - 为什么在调用 ExtJS Grid Store Load 时执行了太多请求?