Angular Factory - 为什么我的变量未定义?
Angular Factory - Why is my variable undefined?
我不明白为什么我的 messages 变量在下面代码的 displayMessage 函数中未定义。我不断收到消息未定义的错误消息。 “Cannot read property 'push' of undefined
”
function messageService( ) {
var messages = {};
var service = {
messages: messages,
displayMessage: displayMessage
};
return service;
function displayMessage (message, messageType) {
messages[messageType].push(message);
}
}
我正在尝试使用 John Papa 的方法将变量和函数与返回的服务分开布置,但我无法弄清楚如何使消息对内部函数可用。
我也试过这个:
function messageService( ) {
/*jshint validthis: true */
var self = this;
self.messages = {};
var service = {
messages: self.messages,
displayMessage: displayMessage
};
return service;
function displayMessage (message, messageType) {
self.messages[messageType].push(message);
}
}
非常感谢任何帮助!
messages[messageType]
未在任何地方定义。所以它是未定义的。
messages
被初始化为空对象,没有任何字段。所以 messages[messageType]
确实是未定义的。
要定义它,并能够对其调用 push(),您需要像
这样的行
messages[messageType] = [];
这会将 messages[messageType]
初始化为一个新的空数组。
您需要使用包含空数组的属性定义消息对象,并且您可以推送值:
function messageService( ) {
var service = {
messages: {
debug: [],
info: [],
warning: [],
error: []
},
displayMessage: displayMessage
};
return service;
function displayMessage (message, messageType) {
service.messages[messageType].push(message);
}
}
注意:将消息类型替换为您的
我不明白为什么我的 messages 变量在下面代码的 displayMessage 函数中未定义。我不断收到消息未定义的错误消息。 “Cannot read property 'push' of undefined
”
function messageService( ) {
var messages = {};
var service = {
messages: messages,
displayMessage: displayMessage
};
return service;
function displayMessage (message, messageType) {
messages[messageType].push(message);
}
}
我正在尝试使用 John Papa 的方法将变量和函数与返回的服务分开布置,但我无法弄清楚如何使消息对内部函数可用。
我也试过这个:
function messageService( ) {
/*jshint validthis: true */
var self = this;
self.messages = {};
var service = {
messages: self.messages,
displayMessage: displayMessage
};
return service;
function displayMessage (message, messageType) {
self.messages[messageType].push(message);
}
}
非常感谢任何帮助!
messages[messageType]
未在任何地方定义。所以它是未定义的。
messages
被初始化为空对象,没有任何字段。所以 messages[messageType]
确实是未定义的。
要定义它,并能够对其调用 push(),您需要像
这样的行messages[messageType] = [];
这会将 messages[messageType]
初始化为一个新的空数组。
您需要使用包含空数组的属性定义消息对象,并且您可以推送值:
function messageService( ) {
var service = {
messages: {
debug: [],
info: [],
warning: [],
error: []
},
displayMessage: displayMessage
};
return service;
function displayMessage (message, messageType) {
service.messages[messageType].push(message);
}
}
注意:将消息类型替换为您的