2013-07-05 2 views
1

ui-bootstrap 모달로 재사용 지시문을 만들려고합니다.angularjs의 지시어 템플릿에 객체를 전달하는 방법은 무엇입니까?

directive('update', function() { 
return { 
    restrict: "E", 
    templateUrl: "tplModal.html", 
    scope: { 
    selected:"=" 
    }, 
    link: function(scope, elm, attr){ 
    scope.open = function (obj) { 
     scope.shouldBeOpen = true; 
    }; 

    scope.close = function() { 
     scope.shouldBeOpen = false; 
    }; 

    scope.opts = { 
     backdropFade: true, 
     dialogFade:true 
    }; 
    } 
} 

})

scope.opts에도 불구하고 tplModal.html이

<button class='btn' ng-click='open(selected)'>Update</button> 
    <div modal="shouldBeOpen" close="close()" options="opts"> 
     <div class="modal-header"> 
      <h3><i class="lead" icon="{{selected.type}}"></i> {{selected.name}}</h3> 
     </div> 
     <div class="modal-body"> 
      <!-- stuffs here --> 
     </div> 
     <div class="modal-footer"> 
      <button class="btn btn-warning cancel" ng-click="close()">Cancel</button> 
     </div> 
    </div> 

, 아니이 :

그것은 거의 옵션 여기

제외하고 일하고는 지침입니다 페이드 효과. 내가 잘못하고있는 무슨 http://plnkr.co/edit/Ab4BOH?p=preview

: 여기

전체 코드?

+0

포스트 여기 코드, 당신은 코드가 할 기대 말해, 당신이 지시어를 사용하는 방법을 이야기를, 그리고 대신에 무엇을하는지. –

+0

나는 질문을 업데이트했다 –

+0

당신의 plunk가 작동하지 않는다, 나는 "Plunk not found"오류를 얻었다. –

답변

0

문제는 당신이 범위에 opts 속성을 추가하는 것이입니다 후 연결 모달 지침의 연결 기능 후에 을 호출되는 기능를, 그래서 모달 지시어는 이러한 옵션을 얻을하지 않습니다.

솔루션은 이동하는 것입니다 scope.opts = ...에 사전 연결 기능 :

directive('update', function() { 
    return { 
     ... 
     compile: function() { 
      return { 
       pre: function(scope, elm, attr){ 
        ... 
        scope.opts = { 
         backdropFade: true, 
         dialogFade: true 
        }; 
       } 
      }; 
     } 
    } 
} 

http://plnkr.co/edit/iZaEiM?p=preview

+0

많은 감사! 나는 지난 몇 시간 동안 이것을 거꾸로 돌렸고 나는 여전히 대답에서 멀었다. 이제 모달 안에 다른 구성 요소 (예 : ui-bootstrap datepicker 또는 ngUpload)를 사용하면 관련 함수를이 사전 연결 함수 안에 넣어야합니까? –

+0

@desgnl 사전 연결 기능에 함수를 넣지 않아도되지만 실제로 함수가 호출되는 시점에 따라 달라집니다. 함수가 이벤트 처리기와 같이 나중에 나중에 호출되는 경우 사후 연결 함수에서 함수를 정의하는 것이 안전합니다. –

관련 문제