Angularjs:如何*从指令中的元素中检索* css属性?
发布时间:2020-12-17 16:59:05 所属栏目:安全 来源:网络整理
导读:我可以在指令中的元素上设置css属性.但我无法使用相同的方法检索元素上的css属性,它只返回一个空字符串. 即:var test = element.css(“background-size”); //不起作用! 我究竟做错了什么?请参阅我的指令中的链接处理程序: link: function($scope,elemen
我可以在指令中的元素上设置css属性.但我无法使用相同的方法检索元素上的css属性,它只返回一个空字符串.
即:var test = element.css(“background-size”); //不起作用! 我究竟做错了什么?请参阅我的指令中的链接处理程序: link: function($scope,element,attrs) { //debugger; //handler for close button: //its the first child within the parent element: $scope.closeBtn = angular.element(element.children()[0]); //save the background image so we can toggle its visibility: $scope.backgroundImg = element.css("background","url(../../a0DK0000003XvBYMA0/assets/images/tabbed_panel_bkgd.png) no-repeat") ;//className: element.css("background-position","0px 35px"); element.css("background-size","924px 580px"); //above I was able to set css properties,but why can't I retrieve css properties like this??: var test = element.css("background-size"); $scope.closeBtn.bind('click',function(){ TweenLite.to(element,.75,{top:"635px",ease:Power2.eaSEOut,onComplete:function(){ $scope.opened = false; $scope.closeBtn.css('opacity',0); } }); }) //hander to raise tab panel: element.bind('click',function() { if(!$scope.opened){ //debugger; $scope.closeBtn.css('opacity',1); TweenLite.to(element,{top:"150px",ease:Power2.eaSEOut}); $scope.opened = true; } }); } 解决方法
我从我的问题中退后一步,意识到如果我试图检索像JQuery一样的css属性,那么我可能不会以“角度方式”应用解决方案.我最初的问题是我需要存储css属性,以便稍后重新应用它们.因此,我使用ng-class指令来切换类,而不是那种方法,所以我不必存储任何东西.
<html> <body> <tabbed-Panel ng-class="btmTabPanelClass" > <div ng-show="opened" class="tabPanelCloseBtn"> </div> <tabs> <pane ng-repeat="pane in panes" heading="{{pane.title}}" active="pane.active"> <div class ="tabPanelContent" ng-include src="activeContent()"></div> </pane> </tabs> </tabbed-Panel> </div </body> </html> angular.module('directives',['baseModule','ui.bootstrap']) .directive('tabbedPanel',['$animator',function($animator) { //debugger; return { //scope:{},restrict:"E",//add controller to here controller:function($scope){ //debugger; $scope.bTabClicked = 0; $scope.curTabIdx = 0; $scope.opened = false; $scope.closeBtn = null; $scope.arClasses = ["bottomTabPanel"," bp_off"]; $scope.btmTabPanelClass = $scope.arClasses[0] + $scope.arClasses[1] ; //get the tabs from the flows.json so we can create a model for the tab panel! $scope.panes = $scope.flows[$scope.getCurFlowIdx()].array_data[$scope.getCurPageIdx()].tab_data; //first tab is active by default: //$scope.panes[0].active = true; //set the content for the current tab: $scope.activeContent = function() { for (var i=0;i<$scope.panes.length;i++) { if ($scope.panes[i].active) { $scope.curTabIdx = i; return $scope.panes[i].content; } } }; //tab click watcher (to make sure user clicks on tab and not tab container): $scope.$watch('activeContent()',function(paneIndex) { ++$scope.bTabClicked; }); //-------------------------------------------------- },link: function($scope,attrs) { //debugger; //handler for close button: //its the first child within the parent element: $scope.closeBtn = angular.element(element.children()[0]); $scope.closeBtn.bind('click',function(){ // set all tabs to inactive: $scope.bTabClicked = 0; for (var i=0;i<$scope.panes.length;i++) $scope.panes[i].active = false; TweenLite.to(element,onComplete:function(){ $scope.opened = false; $scope.btmTabPanelClass = $scope.arClasses[0] + $scope.arClasses[1] ; $scope.$apply(); //force binding to update $scope.bTabClicked = 0; } }); }) /*hander to raise tab panel:*/ element.bind('click',function() { if(!$scope.opened && $scope.bTabClicked){ //debugger; TweenLite.to(element,ease:Power2.eaSEOut}); $scope.opened = true; $scope.btmTabPanelClass = $scope.arClasses[0] ; $scope.$apply(); //force binding to update } else $scope.bTabClicked = 0; }); } }; }]); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |