0
我正在使用AngularJS和Kendo UI的應用程序。我在我的控制器代碼的一個類似於此:
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操作正在進行,因此引發此錯誤。我沒有在我的代碼中的任何其他地方調用$ scope($ apply(),所以我假定由於控制器初始化,第一個$ apply操作被調用。
如果我刪除了$ scope。$ apply(),那麼程序工作正常,但我不明白爲什麼。
我的問題是:該函數不應該被稱爲dataBound事件結果的函數在Angular上下文之外嗎?
在此先感謝!
謝謝你的迴應,我真的不明白,爲什麼功能,從那裏我調用$範圍。$適用()被認爲是在Angular環境中。即使我刪除了$ scope,程序也能正常工作。$ apply()。出於安全原因,我應該使用您的方法嗎? – five
不需要。如果不是在角度上下文,那麼只有去它 –