控制器和模型emberjs之间的关系

时间:2014-09-17 12:10:43

标签: ember.js

我是ember.js的新手,我对ember.js中模型和控制器之间的关系有几个问题

起初我看到了不同类型的数据保存,我有点困惑

    var posts = [{
      id: '1',
      title: "Rails is Omakase",
      author: { name: "d2h" },
      date: new Date('12-27-2012')
    };

然后我看到了类似的事情:

    App.Post.FIXTURES = [{
      id: '1',
      title: "Rails is Omakase",
      author: { name: "d2h" },
      date: new Date('12-27-2012')
    };

有什么区别?

我何时使用Ember.ArrayController vs Ember.Controller,差异对我来说并不是很明显。我认为当模型是一个列表然后我必须使用Ember.ArrayController,但我看到了几个相反的例子?

如何将模型绑定到控制器上?我试过了:

模型

App.AgentenverteilungRoute = Ember.Route.extend({
    model: function(){
        return[{
            TextNr: 'CallcenterPlaetze',
            texte:
                [
                    {
                        sprache: '0',
                        text:"some string",
                        hilfetext: "some string"
                    },{
                        sprache: '1',
                        text:"some string",
                        hilfetext: "some string"
                }],
            value: 10,
            insertattribut: "Textfeld"
        }]
    }
});

控制器

App.AgentverteilungController = Ember.ArrayController.extend({
    needs: ["index"],
    sprachevar: Ember.computed.alias("controllers.index"),
    sprache: 2,

    weiter: function () {
        this.transitionToRoute('bounddefinition')

    }
});

我知道这些问题很多,但我一直在寻找关于这个狗屎的3天,我需要帮助:)

1 个答案:

答案 0 :(得分:0)

Ember与Plain ol JavaScript Objects完美搭配,这就是:

var posts = [{
  id: '1',
  title: "Rails is Omakase",
  author: { name: "d2h" },
  date: new Date('12-27-2012')
}];

这将与Ember Data或Ember Model(两种不同的产品用于客户端记录管理)一起使用

App.Post.FIXTURES = [{
  id: '1',
  title: "Rails is Omakase",
  author: { name: "d2h" },
  date: new Date('12-27-2012')
};

Ember中的控制器用于装饰器/代理模式。这意味着他们只是装饰模型,代理获取并设置模型本身。因此,如果您的模型是集合,则应使用ArrayController。如果它是单个对象,则应使用ObjectController。如果您没有型号,则应使用Controller

您的路线完全找到,您现在应该在路由器中定义该路线并转换到它。

App.Router.map(function() {
  this.resource('agentenverteilung');
});

示例:http://emberjs.jsbin.com/madane/1/edit