[英]Angular scope doesn't get updated on view
我在這里有一個有角度的 ng-click 事件:
eventApp.controller('DetailEventController', ['$scope', '$http', '$compile', '$timeout', function ($scope, $http, $compile, $timeout, uiCalendarConfig) {
$scope.customRule = { isReadOnly: true, isRegistered: false };
$scope.EventClick = function (event, jsEvent, view) {
var isRegistered;
console.log(event.character);
angular.forEach(event.character, function (pvalue, pkey) {
for (var item in pvalue.teilnehmer) {
if (pvalue.teilnehmer[item] == CurrenUserName) {
console.log("User ist bereits angemeldet!");
isRegistered = true;
} else {
console.log("User ist noch nicht angemeldet!");
isRegistered = false;
}
}
});
$scope.customRule.isRegistered = isRegistered;
console.log($scope.customRule);
$scope.eventDetails = event;
$("#detailEvent").css("display", "block");
};
}]);
當我打開控制台時, $scope.customRule 是正確的並且具有“true”值。
User ist bereits angemeldet!
Object { isReadOnly: false, isRegistered: true }
但在我看來,它仍然是“假的”。
HTML:
<div class="modal-footer">
{{customRule}}
<button title="Anmelden" class="btn btn-primary pull-right" ng-click="anmelden(eventDetails.id,radio.class.klasse2Event_Id)" ng-disabled="customRule.isReadOnly || customRule.isRegistered">Anmelden</button>
<button title="Löschen" class="btn btn-primary pull-right" ng-click="removeEvent(eventDetails.id)" ng-disabled="customRule.isReadOnly">Event Löschen</button>
</div>
所以我的視圖沒有得到更新的范圍。 你能告訴我為什么嗎?
我正在閱讀有關角度應用功能的信息。 但我不認為這對我有幫助。 如果我在更新后執行應用功能:
$scope.customRule.isRegistered = isRegistered;
$scope.$apply();
我收到以下錯誤
編輯:我不明白為什么,但我解決了這個問題:
現在我不再初始化自定義規則了。 我在點擊事件之后直接初始化這個值 (isRegistered)。
之前: $scope.customRule.isRegistered = isRegistered;
之后:$scope.isRegistered = isRegistered;
$scope.EventClick = function (event, jsEvent, view) {
var isRegistered;
var testi;
angular.forEach(event.character, function (pvalue, pkey) {
for (var item in pvalue.teilnehmer) {
if (pvalue.teilnehmer[item] == CurrenUserName) {
console.log("User ist bereits angemeldet!");
isRegistered = true;
testi = "WAHR";
} else {
console.log("User ist noch nicht angemeldet!");
isRegistered = false;
testi = "FALSCH";
}
}
});
$scope.isRegistered = isRegistered;
$scope.eventDetails = event;
console.log($scope.customRule);
//$scope.eventDetails = event;
$("#detailEvent").css("display", "block");
};
我看不到您首先在控制器中初始化$scope.customRule.isRegistered
的位置。 但是,由於$scope.$apply()
沒有解決您最有可能嘗試更新undefined
變量的問題。
我建議將$scope.customRule.isRegistered
初始化$scope.customRule.isRegistered
false
或適合您的應用程序邏輯的undefined
以外的其他內容。
與 AngularJS 一樣強大,它在更新視圖模型時遇到了麻煩,這些模型從未undefined
變量變為已定義的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.