我在我的项目中使用了jQuery 滑块,我在其中使用 angular 加载图像。我目前的观点是这样的;
<div id="slides">
<div class="slides_container">
<a href="" data-ng-repeat="image in gallery">
<img data-ng-src="{{image.imageUrl}}" width="919" height="326" alt="" />
</a>
</div>
</div>
控制器;
blogApp.controller("HomeController", ['$scope', '$resource', function ($scope, $resource) {
var basePath = '/api/',
FrontGallery = $resource(basePath + 'gallery?culture=en-US'),
$scope.gallery = FrontGallery.query();
}]);
以及 jQuery 滑块代码(使其成为滑块。我正在使用这个插件http://archive.slidesjs.com/)
$(document).ready(function () {
$('#slides').slides({
preload: true,
preloadImage: '/content/images/theme/loading.gif',
play: 5000,
pause: 2500,
hoverPause: true
});
});
当我尝试这段代码时,我的所有图像都是从数据库中加载的(通过firebug对其进行调试)但是jQuery滑块没有对其应用动画或滑动效果
当我删除data-ng-repeat="image in gallery
并使用一些静态内容即图像时,我得到了向后滑动效果。
这里有什么问题。我认为 Angular 正在操纵我的 DOM。这就是为什么每当我在我的滑块上使用一些角度属性时我都会遇到这个问题。
注意:我对 jQuery 新闻也有同样的问题,即 jQueryInnerFade
插件http://medienfreunde.com/lab/innerfade/
这是如何innerFade
使用的;
<h1>
<img src="/content/images/theme/hotnews.png" alt="" />Hot News</h1>
<ul id="news">
<li class="ng-repeat:headline in news">
<span class="ng-bind:headline.description"></span>
<a href="#" title="Read More">» more</a>
</li>
</ul>
和控制器;
var HotNews = $resource(basePath + 'article/hotnews?culture=en-US');
$scope.news = HotNews.query();
我该如何解决这些问题?
更新 2:
这是我的路线;
// declare a module
var blogApp = angular
.module('blogApp', ['ngResource', 'ngSanitize'])
.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
//$locationProvider.html5Mode(true);
//configure the routes
$routeProvider
.when('/', {
// list the home page
templateUrl: "tmpl/home.html",
controller: "HomeController"
})
.when('/article/:id', {
// access custom param
foo: "hello world",
// list the home page
templateUrl: "tmpl/article.html",
controller: "ArticleController"
})
.when('/404', {
template: '<h1>404 Not Found!</h1>'
})
.otherwise({ redirectTo: '/404' });
}]);
解决方案#1:
临时的,(正如@Jason Goemaat回答的那样)对我有用。所以,这就是我所做的。我没有创建任何directive
东西,但我直接将它注入$timeout
到我的控制器中,然后我做了以下事情;
$timeout(function () {
jQuery('#news').innerfade({
animationtype: 'slide',
speed: 750,
timeout: 2000,
type: 'random',
containerheight: '1em'
});
jQuery('#slides').slides({
preload: true,
preloadImage: 'image/theme/loading.gif',
play: 5000,
pause: 2500,
hoverPause: true
});
}, 100);
它确实适用于 ie forSlider
和 forInnerFade