私はコントローラ "userCrtl"にある$ scope.parents変数を持っています。問題は、その値がAJAX呼び出し後に更新されていないことです。 $ qを使用して約束を終えた後に変更を適用しようとしました。しかし、私は成功しませんでした。 $ scope.watchを使って変更を検出しようとしましたが、このメソッドは決して開始されません。その結果、私のHTMLページは更新されません。 console.log($ scope.parents)を使用すると、$ scope.parentsの値は正常に表示されますが、htmlビューは更新されません。 $ scope.parentsがデフォルト値($ scope.parents = "test")で初期化されている場合、この値は表示されますが、それ以上は変更されません。 最も不満な点は、他のアプリケーションコントローラでも同じことをやっていて、すべて正常に動作することです。 $ scope変数の以前に定義された値のみがhtmlに表示されています。
app.controller("userCtrl", function($scope, userService, $http) {
$scope.panels = userService.get();
$scope.parents = null;
$scope.start = function(panel) {
// Get parents blocks
$http.get(path + "getpaneluser /" + panel.painelUsername).then (function (response) {
$scope.parents = response.data;
// Here the value of parents is normally displayed
console.log($scope.parents);
}, function(error) {
});
};
// Displays only null, even if $scope.parents has a value after the AJAX call
$scope.$Watch('parents', function() {
console.log($scope.parents);
});
});
HTMLコード: には、以下のコントローラのコードである。
<div class="col-lg-12" style="padding-right: 0%;">
{{parents}} <!-- value never displayed -->
<div ng-repeat="item in parents" class="declareContainer">
{{item}}
</div>
</div>
があなたのAJAX呼び出しのスコープの後にあなたの助け
コードに誤字があります:$ scope。$ Watchは$ scopeでなければなりませんが、これはyの理由ではありません私たちの問題 –
あなたが提供したhtmlテンプレートがuserCtrl内にあり、別のコントローラの範囲にないことを確認できますか?これは、userCtrlで設定された$ scope.parentsが独自の子スコープ内にあり、HTMLテンプレートでは使用できないため、UIがuserCtrlによってロードされた新しい値ではなく古い値を表示し続ける理由を説明します。 「userCtrl」が 私はその後、実際には右 – CodeWarrior
だから友人は、ルーティング内部app.jsで次のように定義します$ scope.parentsに変更を適用するには$ apply()を使用しなければなりません –