主干-ajax调用中对象和函数的作用域丢失
backbone - losing scope of objects and functions in ajax calls
我是主干网的新手,我正在努力了解如何在视图中维护范围。在javascript中,我通常将对象设置为一类,并使用self-this来维护整个类的范围。我正努力在骨气上做同样的事情。我有这样的设置:
var app = app || {};
app.TwitterView = Backbone.View.extend({
el: '#twitter-container',
tweets: [],
initialize: function( templateContent ) {
this.render(templateContent);
},
render: function(templateContent) {
this.$el.html(this.template(templateContent));
this.loadTweets();
return this;
},
loadTweets: function(){
console.log('load tweets');
this.tweets = [];
clearInterval(this.tweetCheckInterval,this.tweetCycleInterval);
$.ajax({
url: "scripts/php/mixitup.php",
type: "GET",
dataType: 'json',
cache: false,
success: function (data) {
console.log(data);
for (var i=0; i<data.statuses.length;i++){
var tweet = {};
tweet.status = data.statuses[i].text;
tweet.user = data.statuses[i].user.screen_name;
app.TwitterView.tweets.push(tweet);
所以你可以在最后一行看到,我试图保持对tweets数组的引用,这样我就可以将每条tweet推送到它,但它找不到数组tweets。如何保留此范围?
我发现了这一点-使用jquery ajax,您可以使用context:this作为对象参数,因此在内部您仍然可以引用this.tweets
还可以使用.bind()
来保持作用域:
$.ajax({
url: "scripts/php/mixitup.php",
type: "GET",
dataType: 'json',
cache: false,
success: function (data) {
console.log(data);
for (var i=0; i<data.statuses.length;i++){
var tweet = {};
tweet.status = data.statuses[i].text;
tweet.user = data.statuses[i].user.screen_name;
this.tweets.push(tweet);
}
}.bind(this)
那么就不需要var self = this;
了。。。
app.TwitterView
是一个类型(类(,您可以创建它的实例。因此,您必须引用当前实例(this
(,而不是类名:
var app = app || {};
app.TwitterView = Backbone.View.extend({
el: '#twitter-container',
tweets: [],
loadTweets: function(){
var self = this;
$.ajax({
url: "scripts/php/mixitup.php",
type: "GET",
dataType: 'json',
cache: false,
success: function (data) {
console.log(self.tweets) //need to be able to access that tweets array here.
debugger;
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- AngularJS:如何与其他控制器共享作用域函数和变量
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么
- 嵌套的Angular指令触发父对象上的作用域函数
- $uibModal从windowTemplate调用作用域函数
- 角度:创建可以调用作用域函数的自定义指令
- 在DOM(html)上下文中使用角度作用域函数时出现的问题
- 为什么我的作用域函数没有获取从模型传递的数据
- AngularJS在ngClass更改后执行作用域函数
- 控制台.log在 AngularJS 中执行作用域函数
- JavaScript 不作用域函数参数
- 本地作用域函数原型覆盖
- 在 AngularJS 中执行作用域函数内的服务后,范围变量不会更新
- 达到 10 次摘要迭代,中止(作用域函数问题)
- AngularJS在指令中附加作用域函数
- Javascript eval() for Json 字符串注入了全局作用域函数
- JavaScript本地作用域函数
- 从指令调用父作用域函数
- AngularJS ng控制器指令不接受javascript中的变量(作用域函数),也不给出任何错误
- Javascript:从类内部创建全局作用域函数