如何访问模型以向外部插件提供数据?

时间:2013-08-08 16:19:39

标签: ember.js ember-data

我正在使用datagrid的外部插件。我需要将json对象传递给外部插件。

当我试图访问模型来收集数据(json对象)时,没有发生任何事情,因为它是类而不是对象。

我在这里列出了我的代码:

路由器:

        Grid.Router.map(function () {
      this.resource('mainview', { path: '/' });
        this.resource("modal", function(){
          this.route("new", {path:"/new"});
          this.route("edit", {path: "/:contact_id" });
        });           
    });  

    Grid.MainviewRoute = Ember.Route.extend({
          model: function () {
            return Grid.ModalModel.find();
          }
        });

    Grid.GriddataRoute = Ember.Route.extend({
          model: function () {
                return Grid.ModalModel.find();
              }         
}); 

Model.js:

    Grid.ModalModel =  DS.Model.extend({
    fname: DS.attr('string'),
    lname: DS.attr('string'),
    email: DS.attr('string'),
    contactno: DS.attr('string'),
    gendertype: DS.attr('boolean'),
    contactype: DS.attr('number')
});

Grid.ModalModel.FIXTURES = [
                       {
                         id: 1,
                         fname: "ghg",
                         lname: "gh",
                         email: "gh",
                         contactno: "4542154",
                         gendertype: true,
                         contactype: 1,
                         action1:"",
                         action2:""
                       },
                       {
                         id: 2,
                         fname: "ghg",
                         lname: "gh",
                         email: "gh",
                         contactno: "4542154",
                         gendertype: true,
                         contactype: 1,
                         action1:"",
                         action2:""
                       },
                       {
                         id: 3,
                         fname: "ghg",
                         lname: "gh",
                         email: "gh",
                         contactno: "4542154",
                         gendertype: true,
                         contactype: 1,
                         action1:"",
                         action2:""
                       }
                      ];

Store.js:

Grid.Store = DS.Store.extend({
                  revision: 11,
                  adapter: 'DS.FixtureAdapter'
                });

控制器:

return Grid.ModalModel.find();

这里,视图是从controller访问数据。在视图中(didInsertElement)我正在调用外部数据网格函数并将数据作为参数传递给此函数。

我遇到了以下问题:

如果我尝试使用Grid.ModalModel.find()访问数据我正在上课(请参阅console.log中的以下数据)

Class {type: function, store: Class, isLoaded: true, isUpdating: true, toString: function…}

如果我使用return this.get('controller.model'),我会收到undefined

当我尝试将Grid.ModalModel.find()转换为json对象时,我收到以下错误:

Uncaught TypeError: Converting circular structure to JSON 

有人能告诉我如何在这里访问模型以获取json对象格式的数据吗?

我尝试使用以下代码

Grid.MainviewController = Ember.ArrayController.extend({
    contentChanged: function() {
        this.get('content').forEach(function(item){
          // doing item.toJSON() gives you a plain JSON object
          console.log(item.toJSON({includeId:true}));
        });
      }.observes('content.@each'),
      showmodal: function(){    
            $('#modal').modal(); 
    }
}); 

console.log(item.toJSON({includeId:true}));抛出以下错误Uncaught TypeError: Object [object Object] has no method 'toJSON'

1 个答案:

答案 0 :(得分:2)

你应该为相应的路由创建一个controller并定义一个绑定在content上的计算属性,每次内容更改时都会触发CP函数。

这样的事情:

Grid.MainviewController = Ember.ArrayController.extend({
  contentChanged: function() {
    this.get('content').forEach(function(item){
      // doing item.toJSON() gives you a plain JSON object
      console.log(item.toJSON({includeId:true}));
    });
  }.observes('content.@each')
});

然后使用DS.Model内置方法toJSON()获取记录的JSON表示。

请参阅here了解演示。

希望它有所帮助。