Ember.js 如何在视图中显示带有余烬数据的JSON findAll?
我想显示一个由JSON文件中的数据填充的列表。我会使用修改过的适配器。以下是到目前为止的内容,包括测试json文件的路径(因为我希望在不使用fixture的情况下获得一些帮助) 我不确定如何使用余烬数据推送对象以获得结果。我知道我可能还没有得到一些余烬数据的概念 我的问题是:如何根据以下代码从JSON文件中获取列表 JavaScriptEmber.js 如何在视图中显示带有余烬数据的JSON findAll?,ember.js,ember-data,Ember.js,Ember Data,我想显示一个由JSON文件中的数据填充的列表。我会使用修改过的适配器。以下是到目前为止的内容,包括测试json文件的路径(因为我希望在不使用fixture的情况下获得一些帮助) 我不确定如何使用余烬数据推送对象以获得结果。我知道我可能还没有得到一些余烬数据的概念 我的问题是:如何根据以下代码从JSON文件中获取列表 JavaScript App = Em.Application.create(); App.store = DS.Store.create({ revi
App = Em.Application.create();
App.store = DS.Store.create({
revision: 4,
adapter: App.adapter
});
App.adapter = DS.Adapter.create({
findAll: function (store, type) {
console.log('finding');
var url = type.url;
$.getJSON(url, function(data) {
store.loadMany(type, data);
});
}
});
App.Person = DS.Model.extend({
fName: DS.attr('string'),
surname: DS.attr('string'),
url: 'test.json',
});
App.personController = Ember.ArrayController.create({
content: [],
init: function(){
this._super();// create an instance of the person model
this.set('person', App.store.findAll(App.Person));
},
});
HTML
<script type="text/x-handlebars">
{{#each App.personController}}
<p>{{fName}} {{surname}}</p>
{{/each}}
</script>
- url属性应定义为:
…作为实例变量而不是类变量(请参见示例:)。按照您定义它的方式(或者如果您使用App.Person = DS.Model.extend({ fName: DS.attr('string'), surname: DS.attr('string'), }).reopenClass({ url: 'test.json' });
而不是.reboon({…})
,则可以通过(特定的)person.url而不是type.url访问它.rebookClass({…})
- AFAIK您无法将.json文件添加到JSFIDLE的资源中;它将无法访问。查询test.json的完整url会产生跨域问题
- 您可能需要将模型放置在App.adapter上方、App.store上方。如果仍然失败,请尝试此操作
- 外围观察:test.json中的“name”与代码中的“fName”
为什么要设置
person
?是否应该设置content
?我尝试了您的建议,但仍然无法获取数据。您可以尝试一下代码吗?关于JSIDLE不允许跨域链接,您是对的,我只是尝试将json数据设置为可访问以进行修订,但我现在已经更新了问题,因此所有信息都是正确的可用。非常感谢所有帮助!我最初没有用小提琴回复,因为当时我没有想到如何绕过AJAX调用(实际上您的服务器不允许)。请参见。a)我看到App.store
必须在下面定义App.adapter
——以前对此不确定。b) 对不起,我不是想暗示type
应该是适配器定义中的person
。c) 不需要显式加载{{action}}
,所以我更新了您原来的小提琴。事实上,您可以避免重写init
,只需拥有内容:App.store.findAll(App.Person)
。太棒了!有趣的是,在余烬中,顺序似乎并不影响结果,而事实上(逻辑上)它确实如此。非常感谢您抽出时间,并为所有伟大的建议!为了提高你的文章质量,请包括你的文章将如何/为什么解决这个问题。因为this.set('person')
似乎不正确this.set('content')
App.Person = DS.Model.extend({
fName: DS.attr('string'),
surname: DS.attr('string'),
}).reopenClass({ url: 'test.json' });
App.personController = Ember.ArrayController.create({
content: [],
init: function(){
this._super();// create an instance of the person model
this.set('person', App.store.findAll(App.Person));
},
});