0
私はこの単純なスニペットを持っている:
HTML:
<div ng-app="myApp" ng-controller="SampleController">
<p>{{val1}}</p>
<p>{{val2}}</p>
<input type="button" value="Update" ng-click="update()" />
</div>
Javascriptを:jsfiddleでも
var app = angular.module('myApp', []);
app.controller('SampleController', ['$scope', function($scope) {
$scope.val1 = "Not updated";
$scope.val2 = "Not updated";
$scope.update = function() {
$scope.val1 = "Updated outside!";
setTimeout(function() {
$scope.val2 = "Update inside!";
}, 1);
};
}]);
スニペット。
[更新]ボタンをクリックすると、値val1だけがhtmlに更新されます。それを修正するには?しかし、最も重要なのは、なぜこれが起こっているのか?
PS: setTimeoutは問題を単純化したものに過ぎません。実際には、コールバック関数を持つカスタムコンポーネントについての質問です。
ニース、私はjQuery.ajax.successまたは$ http.getのように、何か他のものを使用しています。または、anglejsにハックがない( '$ timeout'のような)何か? –
「http.get」はダイジェストサイクルを起動します。基本的には、Angularモジュール以外のものはサイクルを引き起こさないので、ハックを使って回避するか、独自の角度モジュールを書く必要があります – tymeJV
スコープの変更が行われたことを「ダイジェストサイクル」に通知する方法はありますか? –