2016-08-17 2 views
1

Angular-UI-Bootstrap Datepicker customClass에 양방향 데이터 바인딩 변수를 전달하려고합니다. 하지만 데이터 바인딩 내 customClass 함수 내에서 작동하지 않습니다, 그냥 날 사용자가 함께 초기화 값을 제공합니다.Angular UI Bootstrap Datepicker 사용자 정의 클래스에 변수를 전달하는 방법

예 :

  1. I 사이트 및 getDayClass로드는
  2. 내가 사이트와 두에서 사용자를 선택합니다 (이 경우 정의되지 않은) chosenUser에서 초기화 된 데이터로 호출되는 -way 데이터 바인딩은 다른 모든 곳에서 올바르게 작동하지만 getDayClass function
  3. 그래서 에서 getDayClasschosenUser는 여전히 그래서

그 함수 내에서 통과되지 않는 getDayClass의 첫 번째로드 후 변수에 대한 변경없는 경우에도 불구하고, 정의로 표시됩니다. 나는 왜 그것이 거기에서 작동하지 않는지 이해할 수 없다.

function CalendarController() { 
    var vm = this; 

    //THIS IS THE VARIABLE (USER OBJECT) I'M TRYING TO PASS TO getDayClass 
    vm.chosenUser = {}; 

    //OPTIONS PASSED TO BOOTSTRAP DATEPICKER 
    vm.options = { 
     customClass: getDayClass 
    }; 

    //THIS IS THE FUNCTION I RUN FROM HTML WITH NG-CLICK AND IT EXECUTES 
    //FUNCTION getDayClass (AMONG OTHER THINGS) 
    vm.refresh = function() { 
     $("#calendar").data("$uibDatepickerController").refreshView(); 
    } 

    function getDayClass(data) { 
     var date = data.date, 
     mode = data.mode; 

     //RETURNS UNDEFINED (ONLY INSIDE THIS FUNCTION) 
     //EVEN AFTER USER HAS BEEN CHOSEN 
     console.log(vm.chosenUser); 
     ... 
    }; 
} 

답변

1

대신 일반 자바 스크립트 객체 표기법을 사용하여 배열로 저장 'chosenUser'에 시도 할 수 있습니다 : 여기

내 각 컨트롤러 코드의 제거 버전입니다. 같은 뭔가 :

function CalendarController() { 
     var vm = this; 

     //THIS IS THE VARIABLE I'M TRYING TO PASS TO getDayClass 
     vm.chosenUser = ["UserNameWillBeHere"]; 

     //OPTIONS PASSED TO BOOTSTRAP DATEPICKER 
     vm.options = { 
      customClass: getDayClass 
     }; 

     //THIS IS THE FUNCTION I RUN FROM HTML WITH NG-CLICK AND IT EXECUTES 
     //FUNCTION getDayClass (AMONG OTHER THINGS) 
     vm.refresh = function() { 
      $("#calendar").data("$uibDatepickerController").refreshView(); 
     } 

     function getDayClass(data) { 
      var date = data.date, 
      mode = data.mode; 

      //RETURNS UNDEFINED (ONLY INSIDE THIS FUNCTION) 
      //EVEN AFTER USER HAS BEEN CHOSEN 
      console.log(vm.chosenUser[0]); 
      ... 
     }; 
    } 
+0

감사하지만 그것은 작동하지 않습니다 문제는 getDayClass 후 chosenUser에 수행 변경 사항 getDayClass에 표시되지 않습니다로드 처음이다 /. 그리고 getDayClass는 사이트가 처음로드 될 때로드되어 selectedUser의 양방향 데이터 바인딩은 어떤 이유로 든 getDayClass에 영향을 미치지 않으므로 아무 쓸모가 없습니다 – Dope

관련 문제