2013-09-24 123 views
0

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

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

的链接是“外面”角,我不知道在哪里,我需要添加$应用功能,如果在所有。

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

index.html页面使用引导程序3.0。

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

+0

我不知道这对你来说是否正常,但是你在控制台中收到错误信息:选项http://arunmahendrakar.com/nsm/data/about.txt Origin http://www.arunmahendrakar.com Access-Control-Allow-Origin不允许。 –

+0

现在这是奇怪的托马斯,COS以前从未见过。 – Arun

+0

这是你不在同一起源的问题。所以网络因安全原因而中止。看看cors –

回答

0

导航时,页面上会出现闪烁,因此角度会注意到更改并尝试更新页面。

问题看起来像你的directives.js它增加了对$ location.path()

scope.$watch('location.path()', function (newPath) {...}); 

根据讨论here,要使用

$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工厂返回$资源对象。这只在页面加载时调用一次。 pageDataLoader工厂返回一个函数。每次实例化pageDataLoader时都会调用此函数。

+0

这不是Sam。我没有故意启用这些图像。图像的东西在本地工作得很好。 – Arun

+0

更新回答,做了那个工作? –

+0

没有。所以为了排除这种可能性,我已经完全删除了应用程序中所有指令代码的引用。我仍然面临同样的问题。但是,我发现当我单击另一个链接时,它仍然从缓存中加载home.txt(请参阅开发工具中的网络跟踪),但文本文件应该不同。上述链接中的应用已更新。如果有帮助,我可以上传代码。 – Arun

相关问题