Я полагаю, что вы используете марионетку. Ваш вопрос, в частности, является вопросом дизайна, а не простой строкой кода, чтобы сделать еще одну неприятную вещь. В идеале, что-то вроде $("#element")
не является хорошей практикой, потому что он проходит через всю вашу DOM, чтобы выяснить элемент.
Скорее я хотел бы предложить вам ниже подход, который хорошо работает в большинстве мест, указанных как ваши взгляды view1 и view2:
- Сделать Layout View в определении регионов, которые содержат как эти взгляды.
- Теперь все, что вам нужно сделать, это инициализировать оба эти вида внутри созданного выше представления макета.
- Если вы хотите получить доступ что-нибудь от view1 к VIEW2, все, что вы делаете внутри view1 что-то, как показано ниже:
С точки зрения дочернего элемента макета:
this.triggerMethod('show:message', msg);
и Компоновка имеет некоторые код как:
childEvents: {
'show:message': function (childView, msg) {
view2.dosomething();
}
}
Таким образом, вы можете сохранить функции вида отдельно друг от друга, а также код остается чистым.
Я думаю, для этого вы также можете посмотреть на марионеток документации http://marionettejs.com/docs/marionette.layoutview.html
В методе визуализации другой точки зрения, вы можете сделать что-то же просто, как 'этого. $ El.data («зрения», это)' , Затем вы сможете получить что-то вроде '$ ('# otherView'). Data ('view')'. – idbehold