私は2つのコントローラを別のコントローラの中に入れています。 ParentControllerにはChildControllerで使用しているオブジェクトが1つあります。これは、子で直接使用できるためです。今、子供で、私は$ httpサービスを呼び出して、このオブジェクトを更新しています。私はそれがビューを更新すべきだと思う。
私は$ scope()を呼び出そうとしましたが、$ apply()はsuccess関数を約束しましたが、私はこのメソッドの使い方を本当に理解できないと思います。ページを更新せずにDOMを更新するには?
$ scope。$ apply()内で$ httpサービスを呼び出す方法についても読んでいます。どうやってするか?
$scope.addVideo = function (data) {
console.log('scope tutorial', tutorial);
$http.post('/tutorials/' + tutorial.id + '/videos/', $scope.formData)
.then((response) => {
$window.tutorial.videos.push(response.data.video);
window.location = '/tutorials' + tutorial.id;
})
}
ここで、UIでは、私はチュートリアルを追加するのを担当するTutorialsControllerを使用しています。私はそれがフォームであり、フォームでのみ動作することを意味します。次に、このチュートリアルでvidoesを表示するVideoControllerがあります。
<div ng-controller="TutorialsController">
// add video in this tutorial logic
<ol ng-repeat="vid in tutorial.videos" ng-controller="VideoController">
<li>{{vid.title}}</li><button>Delete</button>
</ol>
</div>
ビデオが親によって追加されたとき、私は子供を更新すると、子供のVideoControllerは、削除ボタンで動画を削除したときに、私は親スコープから削除します。
ほとんどの場所(コントローラ、サービス)では、イベントを処理しているディレクティブによって$ applyが既に呼び出されています。 $ applyへの明示的な呼び出しは、カスタムイベントコールバックを実装する場合、またはサードパーティのライブラリコールバックを使用する場合にのみ必要です。 – georgeawg
コードに起因する問題について質問するときに、人々が問題を再現するために使用できるコードを提供すれば、より良い回答が得られます。 [最小限の完全かつ検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve)を参照してください。 – georgeawg
多くは、あなたが* "更新オブジェクト" *に使用するアプローチに依存します* – charlietfl