带有 jQuery 函数范围的 Angular 2
Angular 2 with jQuery function scope issue
我似乎无法在 jQuery.Post 中调用addtoItems()函数我需要搜索每个商店的商品,然后将所有内容推送到 this.items 数组中。也许有更简单的方法?显然我是 Angular 2 的新手。
import {
Page,
NavController,
NavParams,
Storage,
LocalStorage
} from 'ionic/ionic';
import {
CalculatorPage
} from '../calculator/calculator';
@Page({
templateUrl: 'build/pages/storelookup/storelookup.html'
})
export class StoreLookupPage {
constructor(nav: NavController, navParams: NavParams) {
this.nav = nav;
this.local = new Storage(LocalStorage);
// If we navigated to this page, we will have an item available as a nav param
this.selectedItem = navParams.get('item');
this.items = [];
}
addtoItems(itemlist, storeid, phone, city, st, address, distance) {
for (var o = 0; o < itemlist.length; o++) {
this.items = []
this.items.push(itemlist[o]);
this.items[o].storeid = storeid
this.items[o].phone = phone
this.items[o].city = city
this.items[o].st = st
this.items[o].address = address
this.items[o].distance = distance
console.log(this.items)
}
}
getItems(query) {
this.items = [];
var name = encodeURIComponent(name);
this.storelist = JSON.parse(this.local.get("stores")._result)
var i = 0;
var i1 = setInterval(function() {
this.local = new Storage(LocalStorage);
this.storelist = JSON.parse(this.local.get("stores")._result)
var storeid = Number(this.storelist[i].id);
var phone = this.storelist[i].phone;
var city = this.storelist[i].address.city;
var st = this.storelist[i].address.state;
var address = this.storelist[i].address.address1;
var distance = this.storelist[i].distance;
jQuery.post("http://www.walmart.com/store/ajax/search", {
searchQuery: "store=" + storeid + "&size=50&query=ipad&offset=0"
})
.done((data) {
var storeresult = JSON.parse(data.searchResults);
var preitems = storeresult.results.filter(isUPC);
this.addtoItems(storeresult.results, storeid, phone, city, st, address, distance); //TypeError: _this.addtoItems is not a function
console.log(this.items)
});
i++;
if (i === this.storelist.length) {
clearInterval(i1);
}
}, 1000);
}
使用箭头函数
(x) => { ... }
而不是
(x) { ... }
和
function (x) { ... }
则this.
始终引用当前类。否则,您需要使用.bind(...)
代码中的示例
.done((data) {
var i1 = setInterval(function() {
相关文章:
- Angular JS-文本框未在独立范围内更新
- AngularJS:带有HTML和angular表达式的指令;编译”;具有外部范围的内容
- 如何包裹/截取Angular范围值
- 是否可以在jQuery事件中更改Angular范围
- FileReader加载不在控制器范围Angular 2内
- 在 Angular 指令中,如何进行回调,其中函数名称位于父范围的变量中
- 如何从ng重复单个范围更改父范围 - Angular JS
- Angular.js$范围和控制器
- Angular:从工厂更新范围不起作用
- Angular.js的多个rest调用范围问题
- Angular-$http范围问题
- Angular ES6控制器范围
- Angular$http返回数据,但不返回'不适用于范围
- 防止Angular范围变量通过引用自动绑定到服务私有成员
- Angular:控制器范围内的可重用功能
- angular.forEach,可以使用函数(键)作为范围扩大
- 选中的Angular HTML列表将所选值放入应用程序范围的变量和跨度中
- 使用jQuery获取h4 class=“”的文本内容;ng结合”;超出Angular范围
- JavaScript 访问 Angular 范围返回“未定义” - 异步问题
- 如何强制从JSON传递的表达式进入Angular范围