我正在设计一个使用Angular
和Socket.IO
的RealTime系统。在其他一些范围内执行角度服务?
我使用两个不同的工厂一个用于订阅主题和其他用于为其回调函数编写逻辑并在其中订阅它。
pubsub.js
app.factory('PubSub', function(){
return{
subscribe: function(event, callback){
socket.on(event, callback);
}, //end subscribe
}
})
orders.js现在
app.factory('Orders', function(PubSub){
return{
subscribeOrderUpdate : function(){
//Subscribing
PubSub.subscribe('onUpdateOrder', this.onOrderUpdate);
},
//Callback function
onOrderUpdate: function(order){
var result = this.findOrder(order.Id);
console.log('Order has been updated');
},
findOrder(OrderId){
//logic to find order based on orderId
}
};
});
当我从我的控制器调用这个
//Controller..
app.controller('OrdersPage', function($scope, Orders){
Orders.subscribeOrderUpdate();
/* Shows Error this.findOrder() is not a function*/
});
现在,当我打电话给这个工厂时,它的显示错误this.findOrder
不是函数。
搜索后,我发现因为我的回调函数onOrderUpdate
获取调用在PubSub
厂范围内因而其示值误差,因为this.findOrder
在Orders
厂范围内的定义。
那么我应该如何定义它,以便在正确的范围内调用this.findOrder
。
您是否尝试将其定义为函数? 'findOrder:function(OrderId)' –
不,因为我需要在工厂内部定义它,因为findOrder中还有其他的逻辑defiend需要在里面订单工厂范围 –