2016-07-27 2 views
0

にスコープ値を更新します。角度JS - 今、私は次のように状態を経て、私のパラメータを渡していますクリック

 .state('app.listing', { 
     url: '/ad/listing/:adId/{type}', 
     params: { 
      adId: { 
      value: "adId", 
      squash: false 
      }, type: { 
      value: null, 
      squash: true 
      } 
     }, 

私は$ stateParamsから「タイプ」を取得し、私のGETリクエストを更新することができますので、これは動作します。

clickイベントからこれを行い、 "type"パラメータを渡すために$ stateParamsを使用する方法はありませんか?

私は基本的に結果をフィルタリングし、ボタンから型パラメータを渡すボタンを持っています。クリックイベントをアタッチしてget要求を更新できるのはもっと簡単です。ただ、私はこのタイプのために2を通過します^何か

$scope.filter = function(type) { 
    if(type) { 
     return type; 
    } 
    return '' ; 
    } 

    $scope.type = $scope.filter(); 

のようなサービスが

$http.get(API_ENDPOINT.url + '/listing/' + adId, { 
     params: { 
      page: page, 
      type: type // essentially $scope.type 
     }, 
     }). 

のようなもので、その後、私のボタンの上に私は

<button ng-click="filter('2')"></button> 

を持ってやってみましたいじり

クリック時にhttp getコールを再開しません。私は変更をブロードキャストする必要がありますか?これを行う簡単な方法はありますか?

これは意味がありますか?上記のコードは、アイデアを伝えるための模擬的なものですが、もしあれば、示唆を提供しています。

+0

フィルター機能で '$ http.get(...)'を呼びますか? – k4l4m

+0

$ state.go( 'app.listing'、{type:$ scope.type})を試しましたか? –

+0

@ k4l4mもっと複雑な設定に結びついたhttpは、init関数に結び付けられています。その後、init関数はさらにinfiniteScrollとページ分割プロセスに入ります。私はフィルタ関数からinit関数を再初期化しようとしましたが、うまくいきませんでした。 – limit

答えて

0

あなたは決して変更を反映するためにbroadcastsを作るためにあなたを必要としません&はHTMLで、その後ng-click

$scope.functionName = function() { 
    return $http.get(API_ENDPOINT.url + '/listing/' + adId, { 
    params: { 
     page: page, 
     type: type // essentially $scope.type 
    } 
    }) 
} 

にフィルタ機能後

<button ng-click="filter('2'); functionName()"></button> 
1

アンギュラそれを呼び出す機能であなたのget呼び出しをラップすることができます〜scopeコントローラ経由の変数

var typeWatcher = '1'; 
$scope.filter = function(type){ 

    if (type !== typeWatch) 
     { 

      $http.get(API_ENDPOINT.url + '/listing/' + adId, { 
       params: { 
        page: page, 
        type: type // essentially $scope.type 
       }, 
      }); 
      typeWatcher = type; 
     } 

}; 
+0

ええ、変更後に$ httpサービスを再開始する方法は、私が立ち往生した場所です。私も$ scope($)を使って変更イベントを試みましたが、それもうまくいきませんでした。ロード時の私の現在のinitは、すべてのhttp呼び出しを持つinfiniteScrollを利用しています。私は基本的に$スコープの変更に基づいてhttpのアップデートをしたいと思っていました。 – limit

+0

@limit ngclickの場合、値が変更されている場合は値をチェックしてからサービスを呼び出します –

+0

@limit更新された答えを確認してください –

0

まあ、クリック時に

$scope.filter = function(type) { 
    if(type) { 
    //call the method using service.methodName 
    return type; 
    } 
    return '' ; 
} 

$http.getメソッドを呼び出すと、一つの機能にその$ http.getメソッドをラップします。

お手伝いします。

いいえお返事

関連する問題