Angularjs - 在回调函数中赋值变量

时间:2016-06-16 09:47:21

标签: javascript angularjs

我使用 Gson gson = new Gson(); ArrayList<Map> list = new ArrayList<>(); while (!cursor.isAfterLast()) { Map hashMap = new HashMap(); for (int i = 0; i < cursor.getColumnCount(); i++) { hashMap.put(cursor.getColumnName(i), cursor.getString(i)); } list.add(hashMap); cursor.moveToNext(); } System.out.println("\t\t\t" + gson.toJson(list)); - 语法并遇到了一个荒谬的情况

controller as

每当触发GoogleService.searchPlace的回调时。我想将 true 分配给this.showAddressDetail。但在这种情况下this.showAddressDetail = false; this.searchPlace = function() { GoogleService.searchPlace($('#address')[0], function(place) { this.showAddressDetail = true; }); }; 是回调函数。
那么如何为this.showAddressDetail赋值?

4 个答案:

答案 0 :(得分:5)

你必须分配&#34; main&#34; Ionic2到另一个变量:

ionic -v 2.0.0-beta.30
cordova -v 6.2.0
node -v v6.2.1
npm -v 3.9.5

答案 1 :(得分:1)

您可以使用this-that方法保存外部this上下文

var that = this;
that.showAddressDetail = false;
that.searchPlace = function() {
    GoogleService.searchPlace($('#address')[0], function(place) {
        that.showAddressDetail = true;
    });
};

答案 2 :(得分:1)

默认情况下,this关键字是指函数的所有者 - 不一定是代码中的位置(reference)。

要解决此问题,只需将控制器this存储在本地范围变量中:

var vm = this;
vm.showAddressDetail = false;
vm.searchPlace = function() {
    GoogleService.searchPlace($('#address')[0], function(place) {
        vm.showAddressDetail = true;
    });
};

本地变量的常用关键字为vm(ViewModel),that_thisself

答案 3 :(得分:1)

如果函数未被调用为构造函数,则可以使用bind来调用具有特定值this的函数。

var fn =  function(place) {
    this.showAddressDetail = true;
};
var callback=fn.bind(this);
this.showAddressDetail = false;
this.searchPlace = function() {
    GoogleService.searchPlace($('#address')[0],callback);
};