导航时页面上会闪烁,因此 Angular 会注意到更改并尝试更新页面。
问题看起来像您的 directives.js,它在 $location.path() 上添加了一个侦听器
scope.$watch('location.path()', function (newPath) {...});
根据这里的讨论,你想使用
$scope.$watch(function() {return location.path()}, function(path) {...});
可能对 $location.path() 的调用会干扰路由。
编辑
以下可能解释它:
services.factory('pageData', ['$resource', '$route',
function ($resource, $route) {
// this is done so I can run the e2e tests from the :8000 port
//debugger;
var slug = ($route.current.params.slug || 'home') + '.txt';
return $resource('http://arunmahendrakar.com/nsm/data/:slug', { slug: slug });
}]);
services.factory('pageDataLoader', ['pageData', '$q',
function (pageData, $q) {
return function () {
var delay = $q.defer();
pageData.query(function (pData) {
delay.resolve(pData);
}, function () {
delay.reject('Unable to fetch data');
});
return delay.promise;
};
}]);
pageData 工厂返回一个 $resource 对象。这仅在页面加载时调用一次。pageDataLoader 工厂返回一个函数。每次实例化 pageDataLoader 时都会调用此函数。