简而言之:
我有一个控制器,它在我的 AngularJS 网页中触发一些 jQuery 以淡出播放按钮和相应的图像。但是,当 URL 更改时,控制器无法处理后续页面。我正在使用动态 URL,我认为这就是我的控制器出现故障的原因。
细节
我通过为我的网站应用程序的每个页面设置一个控制器来组织我的控制器。在这里你可以看到我的路线是如何设置的:
angular.module('100_Ages', ['mydirectives', 'ngResponsiveImages']).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/100_Ages', {templateUrl: 'partials/splash.html', controller: SplashCtrl}).
when('/100_Ages/nav', {templateUrl: 'partials/nav.html', controller: NavCtrl}).
when('/100_Ages/about', {templateUrl: 'partials/person-list.html', controller: AboutCtrl}).
when('/100_Ages/0', {templateUrl: 'partials/splash.html', controller: SplashCtrl}).
when('/100_Ages/:personId', {templateUrl: 'partials/person.html', controller: DetailCtrl}).
otherwise({redirectTo: '/100_Ages'});
}]);
这是有问题的控制器:
function DetailCtrl($scope, $routeParams, $http) {
// Pull down a JSON file with my data to populate Angular template
$http.get('person.json').success(function(data) {
// matches person's id to route.
angular.forEach(data, function(person) {
if (person.id == $routeParams.personId)
$scope.person = person;
});
});
// start of attempt to integrate button click functionality.
$scope.$on('$routeChangeSuccess', function(){
$.noConflict();
jQuery(function(){
jQuery("#playButton").click(function(){
jQuery("#person_photo").fadeOut('9000');
jQuery("#playButton").fadeOut('9000');
jQuery("#player").fadeIn('9000');
});
});
});
}
我在这里使用 jQuery,因为我根本不知道如何在 Angular 中执行此操作。无论如何,当我刷新页面并单击按钮图像时,它可以工作。但是,我有一个“下一个”链接,该链接将路线增加“1”以转到我的应用程序的下一页(100 人的列表,每页一个人)。
当我使用此链接转到其他页面时,我的 jQuery 不再工作。我猜这是因为路由没有改变,即使 URL 是。无论如何要让我的动态路线工作?谢谢。