سؤال

لدي هذه الخدمة للحفاظ على حالة التطبيق محدثة.

'use strict';

angular.module('reportApp')
  .service('Status', function Status() {

    this.appStatus = {};

    // Status
    this.get = function(){

        this.appStatus = {

            menu:{
                right:{
                    activeOption: 'datax'
                },
                left:{

                }
            },
            section:{
                selectedSection: null
            }

        };

        return this.appStatus;

    };

    this.setActiveOptionRightMenu = function(menu){

        this.appStatus.menu.right.activeOption = menu.id;

    };

    this.setActiveSection = function(section){

        this.appStatus.section.selectedSection = section;

    };

    // ####################################


  });

في وحدة التحكم الرئيسية الخاصة بي لدي هذا:

$scope.openRightMenu = function(menu){

    Status.setActiveOptionRightMenu(menu);
    $scope.menu = Status.get().menu;

};

$scope.menu = Status.get().menu;

عند تحميل وحدة التحكم في اللحظة الأولى، فإنها تحصل على القيمة الافتراضية الصحيحة:

$scope.menu = Status.get().menu;

في اللحظة الأولى أتوقع خيار نشط:"ضريبة البيانات" وهذا صحيح.ولكن بعد الحدث انقر في عرض الدعوة openRightMenu لا يقوم العرض بتحديث القيمة الجديدة.إذا وضعت نقطة توقف داخل setActiveOptionRightMenu أستطيع أن أرى القيمة الجديدة يتم ضبطها، ولكن بعد ذلك يبدو أن العرض يتجاهل القيمة الجديدة ويستمر في استخدام القيمة القديمة.

هل كانت مفيدة؟

المحلول

في الحصول على وظيفة أنت تتغلب this.appStatus:

 // Status
this.get = function(){

    this.appStatus = {

        menu:{
            right:{
                activeOption: 'datax'
            },
            left:{

            }
        },
        section:{
            selectedSection: null
        }

    };

    return this.appStatus;

};

هذا سوف دائماً قم بإرجاع هذا الكائن من this.appStatus مع تحديد activeOption باسم "datax".يجب عليك تحديده باستخدام إعداداته الافتراضية خارج وظيفة get أو التحقق لمعرفة ما إذا كان فارغًا.

// Status
this.appStatus = {

        menu:{
            right:{
                activeOption: 'datax'
            },
            left:{

            }
        },
        section:{
            selectedSection: null
        }

      };
this.get = function(){
      return this.appStatus;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top