当前位置:  开发笔记 > 编程语言 > 正文

在uib-tab中,AngularJS uib-datepicker在第一次打开/关闭事件后不显示日历

如何解决《在uib-tab中,AngularJSuib-datepicker在第一次打开/关闭事件后不显示日历》经验,为你挑选了1个好方法。

版本:

Bootstrap 3.5.5

AngularJS 1.4.7

AngularUIB 0.14.3

我在选项卡页面中使用了一个uib-datepicker(使用uib-tabset)


  
    
  

控制器代码:

app.controller("ctrl", function($scope, heatMapSvc){
  $scope.isDatePickerOpen = false;

  $scope.openDatePicker = function(){
    $scope.isDatePickerOpen = true;
    console.log("isDatePickerOpen?", $scope.isDatePickerOpen);
  };
});

选择输入时,datepicker日历将按预期显示.但是,一旦我选择了日期,就会在选择时重新显示日期选择器日历.我没有专注,重新聚焦控制,没有.在我的openDatePicker方法调用中,我写入控制台以确保调用该方法.每次我选择日期选择器(无论是否出现日历),控制器都会触发正确的方法.

我将日期选择器从包装的tabset中取出,并且datepicker正常工作(每个选择显示日历).我需要这个datepicker在我定义的uib-tabset中正常工作.



1> Anton Korne..:

问题在于"范围继承".角度范围基于js对象原型继承.

所以... $scope< - { uib-tables scope }< - { uib-tab scope } 并且第一次,{uib-tab scope}没有isDatePickerOpen从$ scope获取属性,但是在poput关闭之后,{ uib-tab scope }将取自己的isDatePickerOpen等于false,而后者更优先.功能openDatePicker改变$scope.isDatePickerOpen,但日历指令将取值{ uib-tab scope }.

如果要{{isDatePickerOpen}}input标签后添加,你可以看到它.在第一次打开日历后,它总是会被打开false.

1)使用controllerAs语法. 推荐的

控制器:

  var vm = this;

  vm.isDatePickerOpen = false;

  vm.openDatePicker = function(){
    vm.isDatePickerOpen = true;
    console.log("isDatePickerOpen?", vm.isDatePickerOpen);
  };

模板:


  
    
  

注意!要使用此解决方案,您必须使用controller as语法来声明控制器.


...

或者如果你使用ui-router

$stateProvider.state('contacts', {
  templateUrl: '...',
  controller: function(){
    ...
  },
  controllerAs: 'vm'
})

2)访问父范围.不建议提供信息

controlller:

  $scope.isDatePickerOpen = false;

  $scope.openDatePicker = function(){
    $scope.isDatePickerOpen = true;
    console.log("isDatePickerOpen?", $scope.isDatePickerOpen);
  };

模板:


  
    
  

3)使用对象.可以使用,但首先是更好

控制器:

  $scope.status = {isDatePickerOpen : false};

  $scope.openDatePicker = function(){
    $scope.status.isDatePickerOpen = true;
    console.log("isDatePickerOpen?", $scope.status.isDatePickerOpen);
  };

模板:


  
    
  


可能是本文解释主题的更多细节. http://www.undefinednull.com/2014/02/11/mastering-the-scope-of-a-directive-in-angularjs/

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有