ng-clickによってトリガーされる関数とng-changeによって引き起こされる関数、または$ watch(私は両方を試みました)の2つの関数があります。
$scope.setGenre = function(x) {
if (genre == x) {
genre = 0;
} else {
genre = x;
}
$location.search().genre = genre;
$scope.getVideos();
};
ボタンをクリックするとジャンルパラメータが指定された値にURLで直接設定されています
NGクリックメソッドは次のようになります。 $ scopeや$ applyなどは必要ありません。
NG-変更または$が方法を見て実際には同じになります。
$scope.$watch('search', function() {
$location.search().search=$scope.search;
$scope.getVideos();
});
しかし、どうやらパラメータがURLに設定されていません。クリックしてng-click機能を実行すると、検索パラメータが設定されます。
$location.search().search=$scope.search;
を$ timeoutに入れるか、$ scope.applyを実行しようとしましたが、問題は常にダイジェストが実行されていることです。
問題のライブデモ(plunker/jsfiddle)を作成できますか? – yarons
はい! 'genre'がどこに定義されているのか分かりません。 さらに、URLで動作することを期待しました。すなわち、元のURLは'リフレッシュされたURL 'になります。 '$ locationChangeStart' 'URLの変更を監視する$ locationChangeSuccess'イベント –
ジャンルは関数の上に定義され、実際にはsetGenre関数は私が望むように動作します。 2番目の($ watch)関数は、まったく同じコードなので、期待どおりに機能しません。 – Sebi55