2013-03-07 86 views
1

爲null,這裏是我的一個向鏈路功能,restrict to EA and transclude is true爲什麼CSS margin屬性值AngularJS

link : function(scope,element,attrs){ 

      element.ready(function(){ 
       var myUL = element.find('ul'); 
       console.log(myUL.css('margin')); // prints noting in console. 
      }); 
} 

我的HTML是

<body ng-app="nmrApp"> 
    <div class="app-container"> 
    <nmr-dir> 
     <ul> 
      <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 1" alt="" /></a></li> 
      <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 2" alt="" /></a></li> 
      <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 3" alt="" /></a></li> 
      <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 4" alt="" /></a></li> 
      <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 5" alt="" /></a></li> 

     </ul> 
    </nmr-dir> 
    </div> 
</body> 

CSS:從所謂的樣式外部CSS文件的加載。 css

.app-container ul{ 
    margin:0; 
    padding:0; 
    list-style: none; 
} 

當我在控制檯打印myUL它給我

[ul.ng-scope, ready: function, toString: function, eq: function, push: function, sort: function…] 

var myUL = angular.element(element.find('ul')); asow not working for me。 得到堆積我做錯了什麼?我也在元素設置餘量爲0,在我的CSS這個UL

+0

你可以張貼一些是恰當的這個指令的HTML? – 2013-03-07 07:04:34

+0

風格在哪裏定義?它是動態的還是從模板或外部樣式表生成的? – 2013-03-07 07:08:12

回答

0

兩件事情

1)可能有多個ul元素迴應你的發現。

嘗試使用.eq(index)或第n個子選擇器進行指定。

2)儘量在包裹中找到angular.element像這樣:

var myUL = angular.element(element.find('ul')); 
+0

感謝您的超級快速回答。我已經在張貼問題之前嘗試了你的兩個提示...沒有運氣:(我應該寫那個。抱歉..編輯我的任務 – 2013-03-07 07:03:30

0

首先,你包括jQuery的? Angular包含jQuery的輕型版本,它沒有jQuery的所有功能,計算的樣式就是其中之一。其次,如果你看這裏:http://api.jquery.com/css/#css1它說速記CSS屬性不支持。您需要使用'margin-top'(或您感興趣的保證金)。

工作例如:

<!doctype html> 
<html ng-app="myApp"> 
<head> 
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
    <script src="http://code.angularjs.org/1.0.5/angular.min.js"></script> 
    <script> 
    angular.module('myApp', []).controller('Ctrl', function($scope) { 

    }) 
    .directive('nmrDir', function() { 
     return { 
      restrict: 'E', 
      transclude: true, 
      template: '<div ng-transclude></div>', 
      link: function(scope, element, attrs) { 
       element.ready(function(){ 
        var myUL = element.find('ul'); 
        console.log(myUL.css('margin-top')); 
       }); 
      } 
     }; 
    }); 
    </script> 
    <style type="text/css"> 
    .app-container ul{ 
     margin: 10px; 
     padding: 0; 
     list-style: none; 
    } 
    </style> 
</head> 
<body ng-controller="Ctrl"> 
    <div class="app-container"> 
     <nmr-dir> 
      <ul> 
       <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 1" alt="" /></a></li> 
       <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 2" alt="" /></a></li> 
       <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 3" alt="" /></a></li> 
       <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 4" alt="" /></a></li> 
       <li><a href="#"><img src="http://placehold.it/600x300&amp;text=Image 5" alt="" /></a></li> 
      </ul> 
     </nmr-dir> 
    </div> 
</body> 
</html> 
+0

實際上我想用angularjs方式創建我自己的組件,我想使用幾個angularjs項目,不想保留對jquery的任何依賴,有什麼辦法可以在沒有jquery函數的情況下獲得保證金,非常感謝你的回答,代碼與我的代碼有95%的相似,我沒有爲它做任何控制器。如果我沒有錯......沒必要,對吧? – 2013-03-07 08:40:52

+0

不,你不需要控制器,我只是在基於控制器的例子中建立了控制器,如果你不想依賴於jQuery,你需要自己實現這個功能,但我建議你不要這樣做,因爲jQuery的人已經解決了一次。 – 2013-03-07 09:01:21