我使用 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赋值?
答案 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
,_this
,self
。
答案 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);
};