Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将应用程序控制器变量设置为AJAX调用返回的结果_Javascript_Ember.js - Fatal编程技术网

Javascript 将应用程序控制器变量设置为AJAX调用返回的结果

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({

我想将应用程序控制器中的变量重置为AJAX调用返回的值。下面显示的代码无效,因为“this”没有正确的上下文。服务器返回的值不同于15,但第二个console.log仍输出15。我还尝试了App.ApplicationController.set('x',data)和controllers.application.set('x',data)以及其他一些可能性。没有一个奏效。正确的做法是什么

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
函数。