2014-01-08 2 views
0

저는 AngularJS 초보자입니다.AngularJS : 동적 속성을 사용하여 부분 렌더링

부분을로드 할 때 데이터를 전달하려고합니다.

동적 속성을 허용하는 지시문을 원합니다.

<partial url:"employees/index.html" query_string: "Fun House Inc" employees="company.employees"> 

및 객체 "직원이"정의 된보기 : 예를 들어, 객체 "회사"범위에 정의 된 뷰에서 내가 할 수

다음
<partial url:"employees/show.html" employee="employee"> 

입니다 거의 작동하는 필자가 작성한 지침서 (coffeescript로 작성). 위 예제에서 query_string 속성이 전달되면 (링크 함수의 범위 [k] = v 덕택에) employee 특성은 평가 된 객체가 아닌 문자열을 전달합니다. 내가보기에

<partial url:"employees/index.html" query_name: "Fun House Inc" array="company.employees"> 

<partial url:"employees/show.html" model="employee"> 

같은 것을 수행하여 내 문제를 해결 해킹 할 수 있도록 내가 배열, 모델 및 데이터를 정의이 지침에서

App.directive "partial", -> 
    restrict: "E" 

    scope: 
    attribute: "@" 
    expression: "&" 
    model: "=" 
    array: "=" 
    data: "=" 

    templateUrl: (el,attrs)-> 
    "/assets/partials/" + attrs.url 

    link: (scope,el,attrs)-> 
    for k, v of attrs 
     scope[k] = v if (k[0] != "$" && !scope[k]?) 

. 그것은 내가이 솔루션에 만족스럽지 않다고 말했고 거기에는 기성품 솔루션이 없다는 것에 놀랐다. 나는이 모든 잘못을 저지르고 있는가? 이를 수행하는 더 좋은 방법이 있을까요, 아니면 내 지시어를 수정하여 원하는 방식으로 작동하게 할 수 있습니까?

답변

0

따라서 본질적으로 제안되는 것은 특정보기에 대한 데이터를 초기화하는 방법입니다. 이 경우 각 뷰마다 다른 컨트롤러를 지정해야합니다. 이것은 공식 Angular 튜토리얼이 취하는 접근법과 정확히 같습니다.

routing (해당 경로에 지정된 템플릿 경로 및 컨트롤러 정의) 및 custom services (외부 소스에서 데이터 가져 오기 및 별도의 두 컨트롤러에 대한 $ 범위 변수 초기화)의 자습서 챕터를 살펴 보는 것이 좋습니다. 당신이 정말로 설명하고있는 것은 기본적인 응용 프로그램 아키텍처로서 Angular에 내장되어 있으며, Angular가 이미 잘 처리하고있는 것을 복사하고 복제하라는 지시어를 작성하지 않는 것이 좋습니다.

+0

링크를 제공해 주셔서 감사합니다. 내가 그들이 찾고있는 것이라면 나는 확신하지 못한다. 나는 이들 중 일부가로드 된 단일 뷰를 상상하고 있습니다. 나는 레일 배경에서 왔고 레일과 마찬가지로 코드를 구조화하기를 원합니다 (** 아마 이것은 잘못된 접근입니까? **). 내가 어디로 갈 것인지 알려주려면 ... ModelB has_many ModelB has_many ModelC has_one ModelD 등 복잡한 스키마가 있습니다. 나는 하나의 페이지에 전체 트리 (ModelA와 모든 자식/손자)를 생성/편집 할 수있는 양식을 만들고 싶습니다. – brook

+0

Gotcha. http://stackoverflow.com/questions/13422966/how-to-specify-model-to-a-nginclude-directive-in-angularjs와 같이 사이트에 비슷한 질문이있는 것 같습니다. – user3043124

+0

그 중 하나는 매우 가까이 - 거기에 비슷한 질문이 많이 있지만 내 요구 사항을 처리하는 찾지 못했습니다 : templateUrl (내 지시문을 해결하는 동적 URL), 동적 데이터를 모두 문자열로 전달 된 "query_string "위의 지시문과 함께 작동합니다)뿐만 아니라 ** array ** 및 ** data **와 같은 명시 적으로 명명 된 매개 변수를 사용하여 작업 할 수있는"company.employees "와 같이 처리해야하는 개체). 그래도 다시 당신의 도움에 감사드립니다. 나는 당신이 보내준 튜토리얼을 끝내지 못했지만, 여기에 내가 필요로하는 것은 아니지만 그것은 나에게 유용 할 것이다. – brook