2014-12-24 2 views
0

내 문제에 컨트롤러에서 데이터를 전달하기 위해 노력하고 실패는 다음과 같습니다폴리머 및 각도 : 요소

  1. 내가 그 안에 사용자 정의 폴리머 요소를 사용하여 AngularJS와 응용 프로그램을 가지고;

  2. 예를 들어 메인이라고하는 컨트롤러가 있습니다. /주 경로를 처리하고 자체보기를 사용합니다. main.html;

  3. 내 요소이 main.html 내에 있습니다.

  4. 내 컨트롤러에서 컬렉션을 초기화하고 document.querySelector ('my-element'). collection = $ scope.collection을 사용하여 요소에 전달합니다. 그것은/main URL을 직접 열고 페이지가로드 될 때 작동합니다. 하지만 컨트롤러가 ready()와 my-element 작업의 create() 메소드 후에 을 실행하기 때문에 다른 경로를 직접 연 다음/main으로 이동할 때 작동하지 않습니다.

my- 요소 create() 메소드 내에 setInterval()에 대한 잘못된 해결책이 있습니다. 초보자를 도와주세요.

미리 감사드립니다.

// my controller 
 
app.controller('MyController', function($scope, collection) { 
 
    
 
    $scope.collection = collection; // resolved from the route 
 
    
 
}); 
 

 

 
// my element ready() method 
 
... 
 
ready() { 
 
    
 
    
 
    // without timeout it will throw an exception, because JSON.parse parses {{list}} string itself on route state change. 
 
    setTimeout(function() { 
 
    
 
    this.list = JSON.parse(this.getAttribute('list')); 
 
     
 
    }, 300); 
 
    
 
}
<!-- MyController view --> 
 
<my-element list={{collection}}></my-element>

+0

는 u는 우리에게 몇 가지 코드를 보여줄 수 있습니까? –

+0

[Mohhamad Walid] (http://stackoverflow.com/users/2407522/mohammad-walid), 언제든지 환영합니다. –

답변

0

당신은 다음과 같은 바인딩 폴리머 데이터를 사용할 수 있습니다

<polymer-element name="my-element" attributes="listJson"> 
    <template> 
    .... 
    </template> 
    <script> 
    Polymer({ 
     created: function() { 
     this.list = []; 
     }, 
     ready: function() { 
     this.initList(); 
     }, 
     listJsonChanged: function() { 
     this.initList(); 
     }, 
     initList: function() { 
     this.list = JSON.parse(this.listStr); 
     } 
    }) 
    </script> 
</polymer-element> 

을 다음보기에서 :

<my-element listJson="{{collection}}"></my-element> 
+1

아직 작동하지 않습니다. JSON.parse는 JSON 자체가 아니라 {{collection}} 문자열을 파싱하기 때문에 오류가 발생합니다. 다른 솔루션을 찾았습니다 : 1) ** domReady ** 속성 분석을위한 이벤트 핸들러. 2) ** $ watch ** ing document.querySelector ('my-element'). AngularJS 컨트롤러 내에서 목록 데이터를 지정하는 initList. 컨트롤러 로딩 시작시 _undefined_입니다. –

관련 문제