Angular - создайте объект JSON для хранения данных, связанных с каждым маршрутом

Я хотел бы добавить к , что @Visionscaper говорит вверху:

Third --> First --> object --> Second --> object

В этом случае интерпретатор не отфильтровывает класс объекта, потому что его дублированный, скорее потому что второй появляется в позиции головы и не появляется в позиции хвоста в подмножестве иерархии. Хотя объект появляется только в хвостовых позициях и не считается сильной позицией в алгоритме C3 для определения приоритета.

Линеаризация (mro) класса C, L (C), является

  • Класс C
  • плюс слияние линеаризации его родителей P1, P2, .. = L (P1, P2, ...) и список его родителей P1, P2, ..

Линеаризированное слияние выполняется путем выбора общих классов, которые отображаются в виде главы списков, а не хвоста, начиная с вопросов порядка (станет ясно ниже)

линеаризация третьего может быть вычислена следующим образом:

    L(O)  := [O]  // the linearization(mro) of O(object), because O has no parents

    L(First)  :=  [First] + merge(L(O), [O])
               =  [First] + merge([O], [O])
               =  [First, O]

    // Similarly, 
    L(Second)  := [Second, O]

    L(Third)   := [Third] + merge(L(First), L(Second), [First, Second])
                = [Third] + merge([First, O], [Second, O], [First, Second])
// class First is a good candidate for the first merge step, because it only appears as the head of the first and last lists
// class O is not a good candidate for the next merge step, because it also appears in the tails of list 1 and 2, 
                = [Third, First] + merge([O], [Second, O], [Second])
// class Second is a good candidate for the second merge step, because it appears as the head of the list 2 and 3
                = [Third, First, Second] + merge([O], [O])            
                = [Third, First, Second, O]

Таким образом, для реализации super () в следующем коде:

class First(object):
  def __init__(self):
    super(First, self).__init__()
    print "first"

class Second(object):
  def __init__(self):
    super(Second, self).__init__()
    print "second"

class Third(First, Second):
  def __init__(self):
    super(Third, self).__init__()
    print "that's it"

становится очевидным, как этот метод будет разрешен

Third.__init__() ---> First.__init__() ---> Second.__init__() ---> 
Object.__init__() ---> returns ---> Second.__init__() -
prints "second" - returns ---> First.__init__() -
prints "first" - returns ---> Third.__init__() - prints "that's it"

0
задан Murtuza 5 March 2019 в 08:48
поделиться

2 ответа

да, вы можете добиться этого, назначив идентификатор экрана перед вызовом объекта helproute. Если вы хотите, чтобы screen_id был динамическим, вам необходимо сначала передать значение объекту. См. Пример,

   let helpRoutes = {};
    for(let screen_id=0;screen_id<10;screen_id++){
        helpRoutes[`wizard/${screen_id}/step1`] =`This is help content for step ${screen_id}`;
    }
[ 113] После присвоения значения Helproutes вы можете получить значение.

helpRoutes['wizard/2/step1']
0
ответ дан Naieem Mahmud Supto 5 March 2019 в 08:48
поделиться

Вместо

let helpRoutes = {
 'wizard/{screen_id}/step1': 'This is help content for step 1',
 'wizard/{screen_id}/step2': 'This is help content for step 2'
}

вы можете написать его как

let helpRoutes = {
 'step1': 'This is help content for step 1',
 'step2': 'This is help content for step 2'
}

Извлечь последнее слово, используя разделитель / , и получить данные из json. Например, если маршрут wizard/1234/step1, получите последнее слово step1, а затем help[step1].

Это может быть один подход.

0
ответ дан emkay 5 March 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: