0

私はAngularJSでこのサイトに取り組んでいます。ナビゲーション リンク (href を含むタグ) をクリックすると、URL が変更されるのに、ページのコンテンツが更新されないという問題があります。したがって、「About」リンクをクリックすると、URL は #/about に変更されますが、コンテンツは変更されません。ただし、ここでページを手動で更新すると、コンテンツが読み込まれます。

次のサイトを参照してください: www.arunmahendrakar.com/nsm/

リンクは Angular の「外側」にあり、どこに $apply 関数を追加する必要があるのか​​ わかりません。

nsm.controller.js にはルーティングとコントローラーの詳細があり、nsm.services.js にはサーバーからデータを取得するサービスがあり、nsm.directives.js は現在のリンクを強調表示するために使用されます。

index.html ページは、ブートストラップ 3.0 を使用します。

この問題を解決する方法を教えてください。

4

1 に答える 1

0

ナビゲートするとページがちらつくので、Angular は変更に気づき、ページを更新しようとしています。

問題は、 $location.path() にリスナーを追加するディレクティブ.jsのように見えます

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 に答える