【发布时间】:2014-03-05 13:17:58
【问题描述】:
我的应用有一个页面,我在其中使用视图显示来自其他模板的数据,我的视图如下:
<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 调用返回数据,就像它在 /enquiry/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
}
});
但我的问题是该路线永远不会被调用。当我在视图模板的 /enquiry/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;
}
});
它似乎有效,现在我必须弄清楚如何显示我的对象 :) 但感谢您的帮助,这实际上让我以不同的方式解决它!
【问题讨论】:
-
检查文档emberjs.com/guides/routing/defining-your-routes 如果你检查,你会发现你的路线应该类似于 App.EnquirySelectedVehicleRoute
-
我已经编辑了主题以进行此修改,但它仍然是一样的,没有任何东西触发路由器..
-
用您的代码创建一个小提琴,这对我们来说更容易提供帮助。
-
我从来没有设法用 ember 制作小提琴...jsfiddle.net/tJK8V/1我不知道这是否有帮助,抱歉...
标签: ember.js