0

我正在使用 AngularJS 在这个网站上工作。我有一个问题,当我点击导航链接(带有 href 的标签)时,url 正在改变,但页面内容没有得到更新。因此,如果我单击“关于”链接,则 url 会被修改为 #/about,而不是内容。但是,如果我现在手动刷新页面,则会加载内容。

请参阅网站:www.arunmahendrakar.com/nsm/

链接是“外部”Angular,我不确定我需要在哪里添加 $apply 函数,如果有的话。

nsm.controller.js 具有路由和控制器详细信息,nsm.services.js 具有从服务器获取数据的服务,nsm.directives.js 用于突出显示当前链接。

index.html 页面使用 bootstrap 3.0。

请让我知道如何解决此问题。

4

1 回答 1

0

导航时页面上会闪烁,因此 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 时都会调用此函数。

于 2013-09-24T15:54:34.340 回答