2013-12-20 2 views
0

angular.extend가 매개 변수가없는 함수를 평가하는 이상한 문제가 있습니다. 내 userData 팩토리가 내 applicationUserData에서 확장되었지만, 최종 결과는 userData 팩토리의 my userData 객체에 실제 값이 needsTrainingshowWelcomeText 인 것입니다. setUserData(appbaseUserData) 기능은 여전히 ​​기능으로 표시됩니다. 왜 그런지 아십니까?Angular.extend 매개 변수가없는 함수를 평가

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

뭔가 틀린 데이터 여야합니다. 'angular.extend'는 [jsfiddle] (http://jsfiddle.net/bateast/CQwNq/)에서 잘하고 있습니다. –

답변

1

그것은이 일 것 extend 아마 아니다.

당신이 그것을 호출하고있는 시간에 data의 내용

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; 
} 

? 그것은 당신의 기능을 덮어 씌우고있는 어떤 가치가있을 수도 있습니다.

어느 쪽이든, 그것은 extend 자체가 아닙니다. 그건 아주 간단한 기능입니다.

+0

버전 1.2.4 사용; 그리고 삽입 된 applicationUserData를 보면 함수로 읽지 만 확장은 유지되지 않습니다. –

+1

답변을 업데이트했습니다. 그것은 아마 당신의'init' 함수에 전달되는'data'에있는 것이 전부입니다. –

+0

아마 맞을거야! –

관련 문제