所以我有这个奇怪的问题,其中angular.extend正在评估我的无参数函数。我的userData
工厂已从我的applicationUserData
扩展,但最终结果是我的userData工厂中的userData对象具有needsTraining
和showWelcomeText
的实际值,而不是它们是函数。 setUserData(appbaseUserData)
函数仍显示为函数。知道为什么会这样吗?
application.factory('applicationUserData', [function(){
var userData;
return {
setUserData: function(appbaseUserData){
userData = appbaseUserData;
},
needsTraining: function(){
userData.ensureUserDataInitialized();
return userData.needsTraining;
},
showWelcomeText: function(){
userData.ensureUserDataInitialized();
return userData.showWelcomeText;
}
}
}]);
appBaseModule.factory("userData", ["applicationUserData", function(applicationUserData) {
var userData = {},
userDataInitialized = false;
userData.init = function(data) {
applicationUserData.setUserData(userData);
angular.extend(userData, applicationUserData, data);
userDataInitialized = true;
};
....
return userData;
}]);
答案 0 :(得分:1)
这可能不是extend
。
Here is the source for that method in GitHub
function extend(dst) {
var h = dst.$$hashKey;
forEach(arguments, function(obj){
if (obj !== dst) {
forEach(obj, function(value, key){
dst[key] = value;
});
}
});
setHashKey(dst,h);
return dst;
}
当你打电话给data
时有什么问题?它有可能会覆盖你的功能。
无论哪种方式,它本身都不是extend
。这是一个非常简单的功能。