我是Backbone.js的初学者。 我已经完成了一些教程。
我想自己创建一个非教程应用程序并尝试使用Backbone Collection或Model创建显示推文时间轴的简单应用程序。
这是我的代码。 (oauth.js和sha1.js包含在HTML中)
$(function(){
var Tweet = Backbone.Model.extend({
});
var Twitter = Backbone.Collection.extend({
model: Tweet,
initialize: function(api){
this.consumerKey = //consumerKey;
this.consumerSecret = //consumerSecret;
this.accessToken = //accessToken;
this.accessTokenSecret = //accessTokenSecret;
this.message = {
method: "GET",
action: api,
parameters: {
oauth_version: "1.0",
oauth_signature_method: "HMAC-SHA1",
oauth_consumer_key: this.consumerKey,
oauth_token: this.accessToken
}
};
},
getTimeline: function(){
var accessor = {
consumerSecret: this.consumerSecret,
tokenSecret: this.accessTokenSecret
};
OAuth.setTimestampAndNonce(this.message);
OAuth.SignatureMethod.sign(this.message, accessor);
this.url = OAuth.addToURL(this.message.action, this.message.parameters);
var options = {
success: function(data, res){
console.log(data);
console.log(res);
}
};
this.fetch(options);
},
sync: function(method, model, options){
options.timeout = 10000;
options.dataType = 'jsonp';
return Backbone.sync(method, model, options);
}
});
var twitter = new Twitter("https://api.twitter.com/1.1/statuses/home_timeline.json");
twitter.getTimeline();
});
当我刷新HTML页面但Chrome授权按钮显示在Chrome Developer Tool的控制台中时。 我可以在没有Backbone.js的情况下获得时间线。
请教我如何解决它。
谢谢你的善意。
答案 0 :(得分:0)
如果你可以在没有Backbone.js的情况下使用它,你可以使用没有Backbone的fetch方法。 无论如何,只有在执行REST时,sync方法才有用,例如获取,更新,创建和删除方法。
在你的情况下,只有一个获取权?因此,覆盖你的获取功能,并在插入主干之前做你做的任何事情。听听你自己的成功,然后做Collection.reset。
var collection = Backbone.Collection.extend({
_onLoaded : function(data) {
this.reset(data, {parse:true});
},
fetch : function() {
$.get("").success(_.bind(this._onLoaded, this));
}
});