JSON.parse (JSON.stringify (obj)) сворачивает все поля - PullRequest
0 голосов
/ 31 октября 2019

Просмотр различий между областями действия

Я работаю с внешним интерфейсом, который состоит из несколько адаптированных angularjs, и из-за этого был реализован пользовательский метод глубокого клонирования, однако он не безупречен, поэтому я хотел бы изменитьк более популярному JSON.parse(JSON.stringify(obj)) для согласованности.

Проблема здесь в том, что всякий раз, когда используется пользовательский метод глубокого копирования, складные поля остаются открытыми, но всякий раз, когда я пытаюсь использовать JSON.parse(JSON.stringify(obj)), все поля свертываются.

Стоит отметить, что при внесении изменений в текстовое поле оно автоматически обновляется, выполняя глубокое копирование всего раздела, и, следовательно, причина, по которой все поля свертываются, когда JSON.parse(JSON.stringify(obj))используется (и они не должны сворачиваться в этой последовательности).

Я сравнил две версии глубокой копии, и они идентичны.

Поскольку глубокая копия назначена $scope, Я хотел бы сравнить различные версии областей действия (то есть одну, в которой я использую пользовательский метод глубокого клонирования, и одну, где я использую JSON.parse(JSON.stringify(obj)) и наблюдать, есть ли какие-либо состояния или значения, которые изменяются, за исключением самой копии.

Поэтому мой вопрос: есть ли способ сравнить два $ scopes в angularjs?

Правка, вот метод, который использует метод глубокого копирования:

 function getModel() {
        var deferred = $q.defer();
        if ($scope.sectionIdBelongsToCase($state.params.sectionId) && $state.params.section !== 'first') {
            var m = new Restapi.CaseSection();
            if (!$scope.pageData.module) {
                m.$get({
                    id: $state.params.sectionId,
                    dtype: $state.params.section
                }).then(function () {
                    $scope.caseSectionCopy = m;
                    deferred.resolve();
                    ModelHelper.cloneModel($scope.caseSectionCopy, $scope.caseSection, true)
                }, function () {
                    $timeout(function () {
                        $state.transitionTo('index');
                    }, 3000);

                });
            }
            else {
                var m = new Restapi.ModuleSection();
                m.$get({
                    module: $scope.pageData.module,
                    section: $state.params.section
                }).then(function () {
                $scope.caseSectionCopy = m;
                    deferred.resolve();
                     // This is the custom deep clone method
                    ModelHelper.cloneModel($scope.caseSectionCopy, $scope.caseSection, true);
                });
            }
        } else {
            $state.reload();
        }
        return deferred.promise;
    }

Другая проблемаявляется то, что я не знаю, какой метод вызывается после этого. Сборка системы довольно сложна в том смысле, что трудно следить за процессом выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...