2015-06-24 3 views
0

Я имею дело с некоторым плохо спланированным, плохо написанным кодом прямо сейчас, и у меня нет времени на переписывание. Мне нужно иметь доступ к представлению, которое отображается на той же странице, но в остальном оно отличается от представления, с которого мне нужно получить доступ.Получить представление со своего элемента-контейнера

Учитывая элемент, содержащий внешний вид, как я могу получить к нему доступ? Есть ли лучший способ сделать представление доступным (без переписывания, как они связаны друг с другом)?

+0

В методе визуализации другой точки зрения, вы можете сделать что-то же просто, как 'этого. $ El.data («зрения», это)' , Затем вы сможете получить что-то вроде '$ ('# otherView'). Data ('view')'. – idbehold

ответ

2

Я полагаю, что вы используете марионетку. Ваш вопрос, в частности, является вопросом дизайна, а не простой строкой кода, чтобы сделать еще одну неприятную вещь. В идеале, что-то вроде $("#element") не является хорошей практикой, потому что он проходит через всю вашу DOM, чтобы выяснить элемент.

Скорее я хотел бы предложить вам ниже подход, который хорошо работает в большинстве мест, указанных как ваши взгляды view1 и view2:

  1. Сделать Layout View в определении регионов, которые содержат как эти взгляды.
  2. Теперь все, что вам нужно сделать, это инициализировать оба эти вида внутри созданного выше представления макета.
  3. Если вы хотите получить доступ что-нибудь от view1 к VIEW2, все, что вы делаете внутри view1 что-то, как показано ниже:

С точки зрения дочернего элемента макета:

this.triggerMethod('show:message', msg); 

и Компоновка имеет некоторые код как:

childEvents: { 
    'show:message': function (childView, msg) { 
    view2.dosomething(); 
    } 
} 

Таким образом, вы можете сохранить функции вида отдельно друг от друга, а также код остается чистым.

Я думаю, для этого вы также можете посмотреть на марионеток документации http://marionettejs.com/docs/marionette.layoutview.html

 Смежные вопросы

  • Нет связанных вопросов^_^