gpt4 book ai didi

javascript - Angular,从当前服务调用服务功能

转载 作者:行者123 更新时间:2023-12-03 06:54:12 26 4
gpt4 key购买 nike

我有一个名为“sharedData”的服务,其中包含一些函数,如何从另一个此类函数调用其中一个函数?这里是代码(用“??????”标记故障函数):谢谢

service('sharedData', function ($http) {
var refillList = [];
var orderCart = {
orderPlace: null,
orderList: [],
totalSum: 0
};

return {
....
addRefill: function(value) {
...here some logic....
},

addOrder: function(order) {
...here some logic....
},
sendOrder: function(order, refill) {
$http.get(config.urls.ajaxOrder + "{\"order\":{\"table_id\":" + orderCart.orderPlace + ",\"item_id\":" + order.id + ",\"amount\":1,\"action\":1}}").success(function(dataDetails) {
if (dataDetails.success) {
if (refill == 1) {
// Filling refill list
??????????????????this.addRefill(order);?????????
}
// Filling order cart
?????????this.addOrder(order);?????????????
}
});
}
};
}).

最佳答案

您应该保存对此this的引用。

var self = this; 是一种常见的做法。

sendOrder: function(order, refill) {
var self = this;
$http.get(config.urls.ajaxOrder + "{\"order\":{\"table_id\":" + orderCart.orderPlace + ",\"item_id\":" + order.id + ",\"amount\":1,\"action\":1}}")
.success(function(dataDetails) {
if (dataDetails.success) {
if (refill == 1) {
// Filling refill list
self.addRefill(order);
}
// Filling order cart
self.addOrder(order);
}
}
});
}

2016 年更新

现在,使用 ES6,您可以使用如下箭头函数:

sendOrder: function(order, refill) {
$http.get(config.urls.ajaxOrder + "{\"order\":{\"table_id\":" + orderCart.orderPlace + ",\"item_id\":" + order.id + ",\"amount\":1,\"action\":1}}")
.success(dataDetails => {
if (dataDetails.success) {
if (refill == 1) {
// Filling refill list
this.addRefill(order);
}
// Filling order cart
this.addOrder(order);
}
}
});
}

箭头函数不会更改上下文,因此 this 将与 this 相同。

MDN article about arrow functions

关于javascript - Angular,从当前服务调用服务功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16838581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com