我在我的html頁面加載了感言,我正在使用flexslider。AngularJS指令,ng-repeat和一個jquery插件
的標記看起來是這樣的:
<section class="testimonials">
<div class="row">
<div class="small-12 column">
<div class="flexslider">
<ul class="slides">
<li>
<h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod</h2>
<span>- Author Name</span>
</li>
<li>
<h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod</h2>
<span>- Author Name</span>
</li>
<li>
<h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit</h2>
<span>- Author Name</span>
</li>
<li>
<h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod</h2>
<span>- Author Name</span>
</li>
<li>
<h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod</h2>
<span>- Author Name</span>
</li>
</ul>
</div>
<div class="author-thumbs">
<ul class="slides">
<li>
<div>
<span class="container">
<img src="assets/img/testimonial-author-pic.jpg" alt="">
</span>
</div>
</li>
<li>
<div>
<span class="container">
<img src="assets/img/testimonial-author-pic.jpg" alt="">
</span>
</div>
</li>
<li>
<div>
<span class="container">
<img src="assets/img/testimonial-author-pic.jpg" alt="">
</span>
</div>
</li>
<li>
<div>
<span class="container">
<img src="assets/img/testimonial-author-pic.jpg" alt="">
</span>
</div>
</li>
</ul>
</div>
</div>
</div>
起初,我就倒黴了,因爲自從角被加載的部分文件的文件準備好後,我的滑塊停止工作。所以我將flexslider初始化移動到一個指令。像這樣:
app.directive('testimonials', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.find('.author-thumbs').flexslider({
animation: "slide",
controlNav: "thumbnails",
controlNav: false,
directionNav: false,
itemWidth: 80,
minItems: 4,
maxItems: 4,
asNavFor: ".testimonials .flexslider",
});
element.find('.flexslider').flexslider({
animation: "slide",
controlNav: "thumbnails",
controlNav: false,
directionNav: false,
smoothHeight: true,
sync: ".testimonials .author-thumbs"
});
}
};
});
這樣我就可以在html部分添加評價。
好的,但現在我想把這個靜態內容,並將其移動到我的控制器,並進行ng重複。所以我這樣做:
app.controller('HomeCtrl', function($scope){
$scope.testimonials = [
{"quote":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod", "author":"Author Name", "img":"assets/img/testimonial-author-pic.jpg"},
{"quote":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit.", "author":"Author Name", "img":"assets/img/testimonial-author-pic.jpg"},
{"quote":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod", "author":"Author Name", "img":"assets/img/testimonial-author-pic.jpg"},
{"quote":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod", "author":"Author Name", "img":"assets/img/testimonial-author-pic.jpg"},
]
});
創造了推薦部分標記一個新的文件,並改變了它的指令是E類型:
而現在......好了,現在推薦露面但flexslider沒有被初始化。任何人都知道我做錯了什麼?我在尋找並回答這個問題,可以解釋爲什麼我做錯了,因爲我正在努力學習它。
我跑angularjs 1.3.15
是的..我想我的電話是在ng-repeat完成加載之前發生的。 我已經把我的JavaScript和代碼放在一個指令中,因爲我已經做了相當多的研究,看起來這是將這種東西從控制器中排除出去的最佳實踐。我不確定。 我得到它與$超時工作,我今晚將嘗試您的解決方案,這與我不熟悉的$ watch服務,我會盡快回復您。 –
我剛剛測試過它。在我目前的狀態下,它不會工作。 截至我對$ watch的研究中,它將繼續尋找感謝信的變化,然後它將運行setupFlexslider()。由於我的推薦變量仍然是硬編碼的,因此沒有改變,所以手錶沒有運行。它可能會工作,因爲我將來會從服務器加載推薦數據。然而,至少現在,$超時是要走的路。順便說一句,我確認,你應該把所有的DOM操作留在控制器之外,這就是爲什麼指令會處理它。 –
我理解將DOM移出控制器的邏輯,但我認爲Angular人經常會創建無用的指令。如果您想要使用flexslider來處理圖片,視頻或其他內容,該怎麼辦?使用指令方法,您最終將得到3條指令,以執行相同的基本調用。我要旋轉一個小提琴和這個玩.. –