我正在設計一個使用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需要在裏面訂單工廠範圍 –