簡體   English   中英

角度范圍不會在視圖中更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM