2015-01-22 5 views
0

나는 Polymer를 사용하고 있습니다.데이터 손실의 기술적 인 이유

폴리머 구성 요소는 로직을 처리하는 스크립트에 바인딩됩니다. 그것은 다음과 같다 :

<polymer-element name="my-component"> 

    <template></template> 

    <script src="my-component.js"></script> 

</polymer-element> 

기기를 Polymer 함수에 객체를 전달함으로써 생성된다. 이 개체는 구성 요소를 설명하며 적어도 ready이라는 속성을 포함해야합니다. 이 함수는 구성 요소가 생성 될 때마다 실행되는 함수입니다 (예 : 스크립트가 처음 호출 후 사용될 때마다 처음으로 &이라고 호출되는 경우).

이 지금 내 my-component.js

var Timeline; 

function loadTimeline(){ 
    return System.import('balance/timeline/TimeLineModule') 
    .then(function(TM){ 
     Timeline = TM.service; 
    }); 
}; 

loadTimeline() 
.then(function(){ 

    var element = (function 

    var component; 

    return{ 
     ready: function(){ 
      var self = this; 
      component = this; 
      methodThatUtilizesTimelineModule(); 
     } 
    } 

})(); 

    Polymer('day-view',element); 

}) 
.catch(function(e){console.error(e)}); 

내 문제가 모든 것을 잘 한 스크립트를 처음 호출 작동한다는 것입니다. Howevery는 구성 요소를 종료하고 다른 구성 요소를 호출하자마자 위의 스크립트에 속한 곳으로 돌아 오면 Timelineundefined이되고 구성 요소 개체 내의 어딘가에서 loadTimeline()을 다시 호출하면 다시 사용할 수 있습니다.

그래서이 스크립트를 호출하는 구성 요소를 종료 할 때마다 내 변수의 값이 손실된다는 점을 알고 있지만 그 이유는 모르겠습니다.

답변

1

저는 Polymer에 매우 익숙하지만 전역을 사용할 수 있습니까?

<polymer-element name="app-globals"> 
    <script> 
    (function() { 
    // these variables are shared by all instances of app-globals 
    var firstName = 'John'; 
    var lastName = 'Smith'; 

    Polymer({ 
     ready: function() { 
     // copy global values into instance properties 
     this.firstName = firstName; 
     this.lastName = lastName; 
     } 
    }); 
    })(); 
    </script> 
</polymer-element> 

는 그런 주셔서 감사합니다

+0

polymer-project에 API 개발자 가이드를 참조하십시오이

<polymer-element name="my-component"> <template> <app-globals id="globals"></app-globals> <div id="firstname">{{$.globals.firstName}}</div> <div id="lastname">{{$.globals.lastName}}</div> </template> <script> Polymer({ ready: function() { console.log('Last name: ' + this.$.globals.lastName); } }); </script> </polymer-element> 

처럼 사용합니다. 이 방법이 효과적 일 것이라고 확신하지만 서비스에 액세스하기 위해 내 마크 업에 elmeent를 포함하지 않아도됩니다. 그것은 나에게 잘못되었다고 느낀다. 나는 이것이 폴리머가 권고하는 것이라고 알고 있습니다. – user2422960

관련 문제