0

編集:変更を加えてコードブロックを更新し、下部にエラーを表示します

だから私は私の指令の中にいます。ページをリフレッシュしたい。(スクロールして更新した後のように)

角度でこれを行う正しい角度の方法は何ですか? (jqueryでハックできますが、角度のある方法でやろうとしています)

私の計画は、私が現在いる URL を取得することでした。そして、 $location.path(my current url); を設定します。

私の現在のURLが何であるかを理解できないように見えるため、機能しません。

// USAGE: <div alert-bar alertMessage="myMessageVar"></div>
angular.module('foo.directives').
directive('iScroll', ['$rootScope', '$parse', '$location', function($rootScope, $parse,    $location) {
   return {
   restrict: 'C',

link: function(scope, elem, attrs) {
  console.log("iscroll!");

 //document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

 new iScroll('wrapper', { useTransition: false, bounce:true, vScroll:true,
  onScrollEnd: function ($location) {
    console.log("onScrollEnd");
    //x=$location.path();


      x=$location.url();
    console.log("url is "+x);

  },
} );
   }
}
}]);

今は利回り

キャッチされていない TypeError: 未定義のメソッド 'url' を呼び出せません

       // USAGE: <div alert-bar alertMessage="myMessageVar"></div>
        angular.module('foo.directives').
       directive('iScroll', ['$rootScope', '$parse', '$location', function($rootScope, $parse,    $location) {
   return {
   restrict: 'C',

link: function(scope, elem, attrs) {
  console.log("iscroll!");

 //document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

 new iScroll('wrapper', { useTransition: false, bounce:true, vScroll:true,
  onScrollEnd: function ($location) {
    console.log("onScrollEnd");
    //x=$location.path();


      x=$location.path();
    console.log("path is "+x);

  },
} );
   }
}
}]);

今は利回り

キャッチされていない TypeError: 未定義のメソッド 'path' を呼び出せません

4

2 に答える 2

0

それで、私はこれを行う方法を考え出したことがわかりました。現在の場所を取得してから location.path() を同じ場所に設定すると、更新がかなり不十分になります。

私がしたことは、コントローラーの1つにリフレッシュ関数を書くことでした

    $scope.refresh = function() {

  return Headlines.get(queryId).then( function( headlines ) {
   // modify the view of the page you wanted to refresh here by updating your data 
  });

次に、ディレクティブを修正して、そのリフレッシュ関数を呼び出すだけです。注: リフレッシュ関数の周りに scope.$apply(function() { } が必要です。それ以外の場合は、iscroll がページの操作を完了した後にのみ発生します。

angular.module('foo.directives').directive('iScroll', ['$rootScope', '$parse', '$location', function($rootScope, $parse, $location) {
  return {
  restrict: 'C',

link: function(scope, elem, attrs) {
  console.log("iscroll!");

  document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

  new iScroll('wrapper', { useTransition: false, bounce:true, vScroll:true,
    onScrollEnd: function ($location) {
      console.log("onScrollEnd");


   scope.$apply(function() {
     scope.refresh();
   });

     },
    });
   }
  }        
}]);
于 2013-07-30T21:36:18.237 に答える