【问题标题】:How to pass variable to Angular UI Bootstrap Datepicker custom class如何将变量传递给 Angular UI Bootstrap Datepicker 自定义类
【发布时间】:2016-08-17 18:30:23
【问题描述】:

我正在尝试将双向数据绑定变量传递给 Angular-UI-Bootstrap Datepicker customClass。但是数据绑定在我的 customClass 函数中不起作用,它只是给了我初始化 chosenUser 变量的值。

例子:

  1. 我加载网站并调用 getDayClass 并使用在 chosenUser 中初始化的数据(在这种情况下未定义)
  2. 我从站点中选择了一个用户,双向数据绑定在其他任何地方都能正常工作,但在 getDayClass 函数中
  3. 所以在 getDayClass chosenUser 仍然显示为未定义,即使它不是

因此,在第一次加载 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);
       ...
   };
}

【问题讨论】:

    标签: angularjs angular-ui-bootstrap bootstrap-datepicker


    【解决方案1】:

    您可以尝试将“chosenUser”存储到数组中,而不是使用普通的 javascript 对象表示法。类似的东西:

    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]);
               ...
           };
        }
    

    【讨论】:

    • 谢谢,但它不起作用:/ 问题是在 getDayClass 首次加载后对 selectedUser 所做的任何更改都不会出现在 getDayClass 中。并且 getDayClass 是在站点首次加载时加载的,因此 selectedUser 的双向数据绑定没有用,因为由于某种原因它不会影响 getDayClass
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    相关资源
    最近更新 更多