我正在使用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'
答案 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了解演示。
希望它有所帮助。