2014-06-24 5 views
0

여기서는 상대적으로 간단한 작업을하려고합니다. 부울 변수 인 multiExpandable을 내 지시문에 의해 생성 된 재귀 트리로 전달합니다. 변수는 나중에 내 서비스에 의해 평가됩니다. 내 서비스에서는 어떤 이유로 든 정의되지 않은 상태로 되돌아옵니다.부울 값이 전달되지 않습니다.

왜 이것이이 일을 저에게하고 있는지 잘 모르겠습니다. 응용 프로그램 변수는 문자열 객체를 사용하며 문자 그대로 같은 것을 수행하며 절대적으로 좋습니다. 내 코드는 아래에 있습니다. 중요한 점을 간단히 보여주기 위해 많은 내용이 다듬어졌습니다. 왜 이런 일이 일어나는 걸까요?

내 지시어 :

.directive("navigation", function() { 
      return { 
       restrict: 'E', 
       replace: true, 
       scope: { 
        menu: '=', 
        multiExpandable: '=', 
        application: '=', 
       }, 
       controller: function($scope) { 
        $scope.toggleExpand = NavigationService.toggleExpand; 
       }, 

       ... 

      } 

내 템플릿 :

<ul style="list-style: none"> 
<li ng-repeat="node in menu.Folders"> 
    {{multiExpandable}} 
    <i class="fa" ng-click="toggleExpand(node, application, menu, multiExpandable)"></i> 
    <navigation menu="node" application="application" multiExpandable="multiExpandable" ng-show="node.expanded == true"></navigation> 
</li> 
</ul> 

지시어라고 :

<navigation class="nav tree" menu="applications[currentApplication].Menu" application="currentApplication" multiExpandable="expandable"></navigation> 

그리고 서비스의 값이 (콘솔 로그 문이 반환 정의되지 않음) :

_toggleExpand = function (application, multiExpandable) { 

        //some code 

        console.log("in TOGGLE EXPAND - multiExpandable:"); 
        console.log(multiExpandable); 

        //some code 
} 
+0

몇 가지 질문 : 먼저, 질문의 맨 위에있는 코드가 어떤 지시어를 속하는가하는? 둘째, 전반적으로 달성하려는 것은 무엇입니까? –

+0

전반적으로 다른 확장 된 폴더의 동작을 지정하기 위해 multiExpandable 값이 true (폴더가 확장 될 때마다)인지 여부를 확인하려고합니다. 한 번에 하나의 폴더를 만들거나 확장 가능한 트리를 만듭니다. – AKon

답변

3

귀하의 지시 속성 선언은 낙타 표기법이며, 따라서 당신은이 같은 HTML의 대시가 필요합니다로부터

  • 스트립 x 및 데이터 - :

    multi-Expandable="multiExpandable"

    참고 각 그 HTML 요소/속성의 앞부분 및

  • :, - 또는 _ - 이름이 지정된 HTML 속성을 변환합니다. 케이스.

당신은 여기에 대한 자세한 내용을보실 수 있습니다 :

https://docs.angularjs.org/guide/directive

+0

Man ... 설명서에도이 내용이 언급되어 있습니다! 내가 물건을 읽을 때 더주의를 기울일 필요가 있다고 생각해. 감사! – AKon

관련 문제