私はAngularJSとKendo UIを使用するアプリケーションで作業しています。私は私のコントローラのいずれかで、この1のようなコードを持っている:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
var items = [{ text: "Item 1", value: "1" }, { text: "Item 2", value: "2" }];
$("#dropdownlist").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: items,
index: 0,
dataBound: function(e) {
$scope.myVariable = this.value();
$scope.$apply();
}
});
});
あなたが見ることができるように、ドロップダウンリストウィジェットは、ローカルデータにバインドされています。
コードを実行しようとすると、次のエラーが発生します。$ rootScope:inprog。 このエラーは、進行中の$ apply操作が1つしかないためにスローされます。私は$ scopeを呼び出すのではない。$ apply()はコード内のどこにでもあるので、最初の$ apply操作はコントローラの初期化の結果として呼び出されると仮定する。
$ scope($ apply()を削除すると、プログラムは正常に動作しますが、なぜそれほど理解できません。
質問:dataBoundイベントの結果として呼び出される関数が、Angularコンテキストの外にありませんか?
ありがとうございます!
が応答をありがとうあなたが使用できる
$scope.$apply
、なぜ機能、私は本当に私は$スコープを呼び出すところから、理解していない。$適用()、 Angularコンテキストの内側にあると考えられています。 $ scope($ scope)を削除してもプログラムは動作します。安全上の理由から私はあなたの方法を使うべきですか? – five
角度のない状況では必要ない –