如果您正在使用角工作,也許你會要調用一些jQuery庫爲你做的東西有情況。通常的方法是調用頁面準備jQuery的功能:BxSlider和角度JS
$(function(){
$(element).someJqueryFunction();
});
如果您element
內容採用了棱角分明,比這種方法並不好,因爲我瞭解動態添加,你需要創建爲了一個自定義指令以實現此功能。
在我的情況下,我想加載<ul class="bxslider">
元素上的bxSlider,但<ul>
元素的內容應該使用角度ng-repeat
指令加載。
圖片名稱使用REST服務從數據庫中收集的。
我打電話給我的指令,使用下面的代碼名爲startslider
:
<div startslider></div>
我的自定義角度指令是:(pictures
是在$scope
從我的控制器,它被稱爲REST服務傳遞的變量)
application.directive('startslider', function() {
return {
restrict: 'A',
replace: false,
template: '<ul class="bxslider">' +
'<li ng-repeat="picture in pictures">' +
'<img ng-src="{{siteURL}}/slide/{{picture.gallery_source}}" alt="" />'
'</li>' +
'</ul>',
link: function (scope, elm, attrs) {//from angular documentation, the link: function should be called in order to change/update the dom elements
elm.ready(function() {
elm.bxSlider({
mode: 'fade',
autoControls: true,
slideWidth: 360,
slideHeight:600
});
});
}
};
});
至於結果,我得到的所有從數據庫中的圖片顯示我的屏幕上,但沒有bxSlider加載(所有圖片顯示一個波紋管等)。
請注意,bxSlider工作,因爲當我打電話$(element).bxSlider();
手動編寫的代碼,滑塊負荷。
這是怎麼發生的?
當我粘貼示波器$ apply(function(){ scope.pictures = scope.startslider; });我得到以下錯誤:錯誤:[$ rootScope:inprog] http://errors.angularjs.org/1.3.0-beta.3/$rootScope/inprog?p0=%24digest – MrD
所有圖片加載但一個波紋管其他,就像沒有BxSlider一樣。真的不知道發生了什麼。 – MrD
你檢查了jsfiddle嗎?那裏有一個工作的例子。 –