2013-09-24 50 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

相關問題