0

我很难找到一种方法来确保使用模式中保存的信息更新父范围的集合。

父级有一组事件发言人,模态将一个发言人添加到事件中。我希望在单击模态 OK 按钮后将新扬声器添加到页面中。

数据已保存,模式关闭,但除非我刷新页面,否则模型不会更新。

这是我更新扬声器集合的控制器方法。 $scope.speakers绑定到页面中的重复对象。

$scope.updateSpeakersList = function () {
    factory.callGetService("GetSpeakers?eventId=" + $scope.event.eventId)
        .then(function (response) {
            var fullResult = angular.fromJson(response);
            var serviceResponse = JSON.parse(fullResult.data);

            $scope.speakers = serviceResponse.Content;

            LogErrors(serviceResponse.Errors);
        },
        function (data) {
            console.log("Unknown error occurred calling GetSpeakers");
            console.log(data);
        });
}

这是模态应该调用先前方法并因此更新页面的承诺。

$scope.openModal = function (size) {
    var modalInstance = $modal.open({
        templateUrl: "AddSpeakerModal.html",
        controller: "AddSpeakerModalController",
        size: size,
        backdrop: "static",
        scope: $scope, 
        resolve: {
            userId: function() {
                return $scope.currentUserId;
            },
            currentSpeaker: function () {
                return ($scope.currentSpeaker) ? $scope.currentSpeaker : null;
            },
            currentSessions: function () {
                return ($scope.currentSpeakerSessions) ? $scope.currentSpeakerSessions : null;
            },
            event: function () {
                return $scope.event;
            },
            registration: function() {
                return $scope.currentUserRegistration;
            }
        }
    });

    modalInstance.result.then(function (savedSpeaker) {

        $scope.savedSpeaker = savedSpeaker;

        $scope.updateSpeakersList();

    }, function () {
        console.log("Modal dismissed at: " + new Date());
    });
};

为什么模型不更新?

4

3 回答 3

0

如果没有重现问题的最小示例,很难确定,但您的问题可能是您正在更新“影子范围”。这是 Javascript 中的一个特性,它导致对象被复制而不是修改。

$scope.$apply()更改后尝试添加updateSpeakerList()

于 2015-10-16T07:09:28.320 回答
0

检查这篇文章,然后玩弄它。 AngularJS - POST后刷新

对我有用的是成功将数据推送到我的范围,然后设置位置,因此在发布新数据后,我的数据如下:

$scope.look.push(data);
$location.path('/main');
于 2015-10-16T17:15:52.817 回答
0

这里的问题不是我的数据没有必要更新......真正的问题是我试图更新它的时刻是我的应用程序如何组合在一起的错误时刻。我试图在更新可用之前更新底层模型,但没有意识到。AJAX 调用仍在进行中。

在我的模式中,当单击 OK 时,它会运行几个不同的 GET 和 POST。我在这些调用之外调用更新,假设一旦 AJAX 调用完成,它将按顺序调用。(这是错误的。)

一旦我将$scope.updateSpeakersList()呼叫转移到我工厂的最终 AJAX 成功呼叫中,一切似乎都按预期工作。

于 2015-10-17T06:38:15.683 回答