我的应用程序有一个页面,我正在使用该视图显示来自其他模板的数据,我的视图如下:
<script type="text/x-handlebars" data-template-name="enquiry">
[...] // some other information display before
{{view App.EnquirySelectedVehicleView}}
</script>
<script type="text/x-handlebars" data-template-name="selectedVehicle">
// Here is my content
</script>
我的地图如下所示:
this.resource('enquiry', { path: '/enquiry/:enquiry_id'}, function() {
this.route('selectedVehicle');
});
阅读文档后,我在我的观点中做了这个:
App.EnquirySelectedVehicleView = Ember.View.extend({
templateName: 'selectedVehicle'
});
到目前为止一直很好,它显示了我模板中的文字。但我需要自动从此模板(selectedVehicle)中的ajax调用返回数据,就像它在/ inquiry / 1 /上时获取数据一样。
我在路由器中完成了这个:
App.EnquirySelectedVehicle = Ember.Object.extend({});
App.EnquirySelectedVehicleRoute = Ember.Route.extend({
model: function() {
console.log('DEBUG: SelectedVehicle Model');
App.SelectedVehicle.vehicleStock(this)
}
});
App.EnquirySelectedVehicle.reopenClass({
vehicleStock: function(that) {
console.log('DEBUG: Fetch vehicle stock');
// Here come the ajax call
}
});
但我的问题是路由永远不会调用..当我在视图模板中的/ inquiry / 1页面上时,如何从selectedVehicleRoute中返回一些值? (不确定我是否正确提问)
感谢您的帮助!
[编辑]
@Fanta:我想我开始明白我该怎么做了:
App.EnquiryRoute = Ember.Route.extend({
beforeModel: function(transition) {
this.controllerFor('login').send('isSession', transition);
},
model: function(param) {
var promise = new Ember.RSVP.Promise(function(resolve, reject) {
var modelData = {enquiry: {}, vehicleStock: {}};
Ember.$
.get(host + '/enquiry/' + param['enquiry_id'], function(data) {
console.log('DEBUG: Enquriry GET OK id = ' + param['enquiry_id']);
modelData.enquiry = data.enquiry;
Ember.$.get(host + '/vehiclestock/' + data.enquiry.VehicleStockId, function(data) {
console.log('DEBUG: VehicleStock GET OK id = ' + data.enquiry.VehicleStockId)
console.log(data);
modelData.vehicleStock = data.vehicleStock;
resolve(modelData);
});
});
});
return promise;
}
});
它似乎有效,现在我必须弄清楚如何显示我的对象:)但是谢谢你的帮助,这实际上让我以不同的方式解决它!
答案 0 :(得分:1)
为了将来参考,只需转到https://github.com/emberjs/ember.js/blob/master/CONTRIBUTING.md,您将看到两个链接,一个链接到JSFiddle,一个链接到JSBin,基本设置。
你确定这条路线没有被叫到吗?我创建了一个小提琴,http://jsfiddle.net/NQKvy/817/如果你检查JS控制台,你会在日志中看到:
DEBUG: SelectedVehicle Model
DEBUG: Fetch vehicle stock