我通过AngularJS创建单页应用程序,我发现了我的问题。我在路由A中通过jQuery每2分钟刷新一次数据。当我改为其他路由时,控制器中的该功能仍在工作。这是我的代码。
App.js
var newsapp = angular.module('newsAppMD', ['ngRoute']);
newsapp.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/news', {
templateUrl: 'templates/news.html',
controller: 'imageNewsCtrl'
}).
when('/news/:nameCat', {
templateUrl: 'templates/news-thumbnail.html',
controller: 'newsPageCtrl'
}).
otherwise({
redirectTo: '/news'
});
}]);
newsapp.controller('imageNewsCtrl', function($scope, $http, $interval, $timeout ) {
$('#bottom-bar').find('#epg').hide();
$scope.updateTimeEPG = 120000;
$scope.fetchFeed = function() {
$http.get("http://wi.th/thaipbs_tv_backend/epg_forJS.php").success(function(response) {
$scope.items = response.Schedule;
console.log($scope.items);
$timeout(function() { $scope.fetchFeed(); }, $scope.updateTimeEPG);
}).then(function() {
$('#bottom-bar').find('.loading').hide();
$('#bottom-bar').find('#epg').show();
});
};
$scope.fetchFeed();
});
newsapp.controller('newsPageCtrl', function($scope, $http, $location) {
// blah blah blah
}]);
我选择/news
imageNewsCtrl
工作。当我切换到其他路线时,imageNewsCtrl
中的功能仍然有效(当我改变路线时,我看到功能打印console.log)。我想在改变路线时停止控制器中的功能。感谢大家的建议。 :)
答案 0 :(得分:0)
我不太确定,但尝试使用$ stateProvider而不是$ routeProvider。如果你这样做,那么你需要npm install angular-ui-router(它是powerful第三方模块)并替换ngroute。我只为.otherwise函数使用$ routeProvider。你也可以使用$ stateProvider做更多很酷的东西,比如onEnter和onExit。另一件事是我建议你只使用Angular而不是jQuery。我真的没有看到你使用两者的重点。使用Angular的双向数据绑定!另外,如果您真的想进入Angular,我建议John Papa's style guide。这些家伙知道他正在谈论制作一个伟大的Angular应用程序。我希望这些信息有所帮助!