1

我在使用 EmberJS 来创建基于 ID 的帖子的单个视图时遇到了问题,但不是数组的 ID,我实际上有一个 ID 是我从 Tumblr API 获得的 json 附带的。

所以 ID 类似于“54930292”。

接下来我尝试使用这个ID做另一个jsonp来获取这个id的帖子,如果你打开api并输入id,它会起作用,实际上如果你打开带有ID的单个url,也可以,问题是:

例如,当我在首页单击链接转到单曲时,它什么也没有返回并引发错误。

但是,如果您刷新页面,您将获得内容。

不知道如何解决并感谢一些帮助:(

我把代码放到网上:http: //tkrp.net/tumblr_test/

4

2 回答 2

1

你得到的错误是因为它SingleRoute是作为一个生成的,ArrayController但 json 响应不是一个数组。

App.SingleController = Ember.ObjectController.extend({

});

进一步注意,使用和其他助手model时不会触发钩子。linkTo这是因为 Ember 假定如果您链接到模型,则假定模型是指定的,并且它直接使用该模型调用 setupController。在您的情况下,您仍需要加载单个帖子。我添加setupController到路线来做到这一点。

App.SingleRoute = Ember.Route.extend({
  model: function(params) {
    return App.TKRPTumblr.find(params.id);
  },
  setupController: function(controller, id) {
    App.TKRPTumblr.find(id)
    .then(function(data) {
      controller.set('content', data.response);    
    });
  }
});

我稍微更改了单个帖子模板以反映 json 响应的方式。我所做的最后一项更改是直接返回$.ajax. Ember 直接理解 jQuery Promise,所以你不需要做任何解析。

这是更新的jsbin

于 2013-06-28T15:22:40.900 回答
0

我修改了:http: //jsbin.com/okezum/6/edit 这样做是为了“修复”刷新单页错误:

setupController: function(controller, id) {
    if(typeof id === 'object'){
        controller.set('content', id.response);
    }else{
        App.TKRPTumblr.find(id)
        .then(function(data) {
            controller.set('content', data.response);    
        });
    }
}

修改了 setupController,因为我在刷新页面时得到了一个对象,在单击linkTo

不知道这是否是最好的方法:s

于 2013-06-28T19:06:25.640 回答