AngularJSアプリは、ng-repeat
を使用してテーブルにデータを表示します。 AngularJSはGETリクエストを作成し、配列を取得します。テーブルには配列の要素が正しく表示されます。anglejs - アレイの更新時にng-repeatが更新されない
ページには、配列を変更する関数を呼び出すボタンが含まれています。ただし、テーブルは変更された配列を反映するように更新されません。
私は次のことを試してみました:
- 更新後
$scope.apply()
を呼び出します。 $scope.apply()
に渡された関数内の更新を囲みます。$scope.apply(function...)
のようになります。これらの試みの$timeout
Link
noneを使用してLinkは
ng-repeat
はapply()
それ自身を呼び出していると思います。 AngularJS
<script>
var app2 = angular.module('myApp2', []);
app2.controller('StocksController', function ($scope, $http, $timeout) {
// When the page loads...
// Load myData with REST GET
$http.get("http://example.com/exWebAPI/api/Ticker/").then(function (response) {
$scope.myData = response.data;
});
// Update the array
$scope.SendData = function() {
alert('Hello from SendData.');
$scope.myData.splice(0, 2);
$scope.$apply();
};
});
</script>
HTML
<div ng-app="myApp2" ng-controller="StocksController">
<h2>Reportable Tickers</h2>
<p>
<a href="#" ng-click='AddTicker()'>Add Ticker</a>
</p>
<table class="table">
<tr>
<th>
Symbol
</th>
<th></th>
</tr>
<tr ng-repeat="x in myData">
<td>
{{ x.Ticker }}
</td>
<td>
<a href="#" ng-click='EditTicker(x.Ticker)'>Edit</a> |
<a href="#" ng-click='DetailsTicker(x.Ticker)'>Details</a> |
<a href="#" ng-click='DeleteTicker(x.Ticker)'>Delete</a>
</td>
</tr>
</table>
<hr />
<div>
<div ng-controller="StocksController">
<button ng-click="SendData()">Submit</button>
<button ng-click="QueryData()">Query Data</button>
<hr />
</div>
</div>
</div>
スプライスの目標は何ですか? –
ボタンのdivでng-app = "myApp2" ng-controller = "StocksController"を使用しています –
@ KaushalNiraula配列から2つの要素を削除するつもりです。私の例では、スプライスが私のモデルに任意の変更を加えることを意図しています。実際の変更はより複雑になる可能性があります。 –