Javascript Ember初学者:使用ajax的路由器和插座
我刚刚接触恩伯,确信这是一个简单的问题,但无法找到实现我想要的最好方法。 情况如下:Javascript Ember初学者:使用ajax的路由器和插座,javascript,ember.js,Javascript,Ember.js,我刚刚接触恩伯,确信这是一个简单的问题,但无法找到实现我想要的最好方法。 情况如下: App.Router = Ember.Router.extend({ root: Ember.Route.extend({ home: Ember.Route.extend({ route: '/', connectOutlets: function(router) { router.get('applicationController').con
App.Router = Ember.Router.extend({
root: Ember.Route.extend({
home: Ember.Route.extend({
route: '/',
connectOutlets: function(router) {
router.get('applicationController').connectOutlet('home');
router.get('homeController').connectOutlet('menu', 'menu', App.Channels.find());
router.get('homeController').connectOutlet('video_overview', 'videoOverview', App.Featured.find());
}
})
})
App.Featured = Ember.Object.extend();
App.Featured.reopenClass({
find: function() {
setRequestUrl('featured');
establishSecureConnection();
$.ajaxQueue({
type: "GET",
url: connect.url,
data: "",
dataType: 'jsonp',
jsonp: false,
jsonpCallback: "fjsonp",
cache: true,
context: this,
success: function(response){
this.findOne(response[0].mediaId); // get the first featured object and retrieve details
//
console.log('Featured Video:');
console.log(response);
}
});
},
findOne: function(item) {
var featuredVideo = App.Featured.create({});
setRequestUrl('media/'+item);
establishSecureConnection();
$.ajaxQueue({
type: "GET",
url: connect.url,
data: "",
dataType: 'jsonp',
jsonp: false,
jsonpCallback: "fjsonp",
cache: true,
context: featuredVideo,
success: function(response){
this.setProperties(response);
//
console.log('Featured Video details:');
console.log(response);
}
});
return featuredVideo;
}
因此,当执行应用程序和路由器时,我可以在浏览器日志中看到响应,但值从未到达模板
我想这与我在应用程序上执行的“double”请求有关。Featured
(首先查找()然后查找完成()),因此当我使用returnfeaturedVideo返回值时,不会收到通知
非常感谢您抽出时间。应用程序的特色功能。查找似乎返回了任何内容。我想你必须返回findOne的结果,不是吗?为什么大家都要返回,
最后,我开始胡闹,接受狡猾的建议,开始工作了
这是我实现的方式,但如果有人能详细解释余烬的行为,我将不胜感激
App.Featured = Ember.Object.extend();
App.Featured.reopenClass({
find: function(singleItem) {
if (singleItem){
console.log('Returning the single item...');
console.log(singleItem);
//
featuredContent.setProperties(singleItem);
} else {
setRequestUrl('featured');
establishSecureConnection();
$.ajaxQueue({
type: "GET",
url: connect.url,
data: "",
dataType: 'jsonp',
jsonp: false,
jsonpCallback: "fjsonp",
cache: true,
context: featuredContent,
success: function(response){
this.setProperties(App.Featured.findOne(response[0].mediaId)); // this.setProperties({'category':'hey arrives here success'});
//
console.log('Featured Video:');
console.log(response);
}
});
}
return featuredContent;
},
findOne: function(item) {
setRequestUrl('media/'+item);
establishSecureConnection();
$.ajaxQueue({
type: "GET",
url: connect.url,
data: "",
dataType: 'jsonp',
jsonp: false,
jsonpCallback: "fjsonp",
cache: true,
context: this,
success: function(response){
console.log('Featured Video content:');
console.log(response);
//
this.find(response);
}
});
}
}))
然后模板接收对featuredContent对象所做的更改。是的,你说得对,但我已经尝试过了,而且看起来是一样的。我尝试在findOne成功函数中返回结果,希望传递给find以更新模板。如何返回值?定义find方法的原则是立即返回某些内容。因此,创建一个voidApp.Featured.create({})
,然后像您所做的那样设置属性,我认为这是一个好方法:)。如果你必须处理更多的后端连接,涉及关系等。。。我建议你看一下恩伯数据。是的,当然!几天前,我遇到了余烬的数据,但不幸的是,我还没有能够进行测试。再次感谢您的建议;)
var featuredContent = App.Featured.create({});