我在这里有一个角度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>
所以我的视图没有获得更新的范围。你能告诉我为什么吗?
我正在阅读角度应用功能。但我不认为这有助于我。如果我在更新后执行apply函数:
$scope.customRule.isRegistered = isRegistered;
$scope.$apply();
我收到以下错误
修改 我不明白为什么,但我解决了这个问题:
现在我不再启动定制规则了。 我在click事件后直接初始化这个值(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");
};
答案 0 :(得分:0)
我无法在控制器中看到您首次初始化$scope.customRule.isRegistered
的位置。但是,由于$scope.$apply()
未解决问题,因此您很可能正在尝试更新undefined
变量。
我建议将$scope.customRule.isRegistered
初始化为false
或undefined
以外的其他符合您应用程序逻辑的内容。
与AngularJS一样强大,它无法使用从undefined
变量更改为已定义变量的模型更新视图。