我有一个简单的Ember.js应用程序。有一个application view
,在该视图中有一个results view
。更新视图,每当有Ember-Model的新记录
我使用烬模型来从这样的服务器JSON:
Map.Winery = Ember.Model.extend({
name: Ember.attr(),
address: Ember.attr(),
address_2: Ember.attr(),
city: Ember.attr(),
stateprovince: Ember.attr(),
country: Ember.attr(),
latitude: Ember.attr(),
longitude: Ember.attr(),
full_address: function() {
return this.get('address') + ' ' + this.get('city') + ' ' + this.get('stateprovince') + ' ' + this.get('country');
}.observes('address', 'city', 'stateprovince', 'country')
});
Map.Winery.adapter = Ember.Adapter.create({
findAll: function(klass, records) {
return Ember.$.getJSON('/api/wineries').then(function(response) {
if (response.success) {
records.load(klass, response.data);
}
});
}
});
我做到了尽可能的简单,使人们可以有一个公平看看发生了什么事情。所以基本上,我的应用程序视图中有一个按钮,每当我点击时,调用一个调用Map.Winery.findAll()的动作; (从服务器重新加载数据)。
我想要的是,只要有新的数据加载在记录中,results view
应更新与新的结果。
application.hbs
<button class="locate" {{action "reload" on="click"}}>Reload</button>
{{view Map.ResultsView}}
application_controller.js
Map.ApplicationController = Ember.ObjectController.extend({
actions: {
reload: function() {
var results = Map.Winery.findAll();
}
}
});
results.hbs
<div class="results">
{{#each results}}
<p>{{this}}</p>
{{/each}}
</div>
个results_view.js
Map.ResultsView = Ember.View.extend({
templateName: 'results',
didInsertElement: function(e) {
}
});
现在的问题是:我如何使它所以每当有从服务器加载到的记录,结果视图的新数据得到更新?
我尝试插入尽可能多的相关代码,随时提出任何问题。
感谢