Javascript 将应用程序控制器变量设置为AJAX调用返回的结果
我想将应用程序控制器中的变量重置为AJAX调用返回的值。下面显示的代码无效,因为“this”没有正确的上下文。服务器返回的值不同于15,但第二个console.log仍输出15。我还尝试了App.ApplicationController.set('x',data)和controllers.application.set('x',data)以及其他一些可能性。没有一个奏效。正确的做法是什么Javascript 将应用程序控制器变量设置为AJAX调用返回的结果,javascript,ember.js,Javascript,Ember.js,我想将应用程序控制器中的变量重置为AJAX调用返回的值。下面显示的代码无效,因为“this”没有正确的上下文。服务器返回的值不同于15,但第二个console.log仍输出15。我还尝试了App.ApplicationController.set('x',data)和controllers.application.set('x',data)以及其他一些可能性。没有一个奏效。正确的做法是什么 App.ApplicationController = Ember.Controller.extend({
App.ApplicationController = Ember.Controller.extend({
x: 15,
init: function() {
console.log(this.get('x'));
$.getJSON ("strats/limits.json")
.done (function (data){this.set('x', data);});
console.log(this.get('x')}
});
你的问题只是一个
JavaScript
问题。。。试试这个:
App.ApplicationController = Ember.Controller.extend({
x: 15,
init: function() {
var self= this;
console.log(self.get('x'));
$.getJSON ("strats/limits.json")
.done (function (data){self.set('x', data);});
console.log(self.get('x');
}
});
使用“this”时一定要小心,记住嵌套函数可能有不同的值 此外,第二个console.log将始终打印与第一个相同的值
getJSON()
不会阻塞,它会立即返回,稍后异步调用done
函数。