的問題是在這裏:
.provider('notifications',['socket', 'redisMsg', function(socket, redis) {
要定義提供商,並在同一時間注射服務(插座,redisMsg)的實例。這是不允許的。在提供商中,您只能注入其他提供商。如果你需要的情況下,則$應該獲得與那些情況下被注入,而不是在提供功能:
.provider('notifications',[function() {
var notifications = [];
return {
$get: ['socket', 'redisMsg', function(socket, redis) {
return {
listen: function() {
// complains in the line below
// unknown provider socket
// if I change to socketProvider
// still fails with
// undefined is not a function
socket.on('redis', function(msg) {
redis.processRedis(msg);
var message = redis.getMessage();
if (message.action !== 'jobRunning') {
notifications.push(message);
}
if (message.action === 'PeberryChange') {
socket.emit('get-peberries');
}
console.log(message);
});
},
getNotifications: function(action) {
if (typeof action !== 'undefined') {
return alert("NOT DONE YET BRUH!!!");
}
return notifications;
}
};
}]
};
}])
Plunker Here
這是$ rootScope的目的,但要聰明,不要濫用它。 – Shomz
我認爲服務是更好的選擇。一個服務可以通過依賴注入來依賴另一個服務:app.factory('myService',function(myDependentService){...}); – pixelbits
@pixelbits我有一個問題。保持說注入的服務是不確定的。但我同意,IMO認爲服務是更優雅的方式。 – LouieV