私はAngular.jsの初心者で、現在tutorialを使っています。私は、電話機の台数をユーザーが変更可能に表示させることにしました。私のコントローラで:Angular.js - ユーザー入力に応じてjsonリクエストをスライスする
function PhoneListController($http) {
var self = this;
self.orderProp = 'age';
$http.get('phones/phones.json').then(function(response) {
self.phones = response.data.slice(0, self.displayNum);
});
}
PhoneListController.$inject = ['$http']; //services to inject for each parameter in PhoneListController
私はユーザーからのdisplayNum入力に従ってサーバーから取得した応答データをスライスします。私はdisplayNumがモデルで更新されていると確信していますが、予想通りにjsonをスライスしません。 httpリクエストは最初に一度だけ作成されますか?
私のテンプレートの関連セクション:<input ng-model="$ctrl.displayNum" />
での数字入力に応じて下のアップデートで
display num: {{$ctrl.displayNum}}
<p>
Number of phones displayed:
<input ng-model="$ctrl.displayNum" />
</p>
...
<ul class="phones">
<li ng-repeat="phone in $ctrl.phones | filter:$ctrl.query | orderBy:$ctrl.orderProp">
<span>{{phone.name}}</span>
<p>{{phone.snippet}}</p>
</li>
</ul>
<p>display num: {{$ctrl.displayNum}}</p>
が、リストのサイズを変更しません。コントローラでself.displayNum
の値をハードコードすると、ページを更新するときにリストが正しくスライスされますが、入力値を変更するとリストに何も反映されません。
あなたは 'displayNum'モデルを更新した後、再び' http'サービスを呼び出す必要があります。 –
それを拡張していただけますか?どのように私は再びhttpを呼び出すだろうか?モデルが変更されたかどうかを確認する方法はありますか? – monadoboi
https://docs.angularjs.org/api/ng/directive/ngChange –