2016-11-17 2 views

ответ

1

Самый простой способ, который я нашел, это использовать dynamic template, чтобы выбрать шаблон для мобильного или рабочего стола и прикрепить js к родительскому шаблону - такому, который встраивает динамический шаблон.

+0

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

+0

Использование blaze для переключения макетов проще '{{if isMobile}} {{> mobileTemplate}} {{else}} {{> desktopTemplate}}', но каждый шаблон нуждается в собственных помощниках. Динамические шаблоны являются единственным обходным решением, которое я знаю для повторного использования js через шаблоны (помимо глобальных помощников). –

0

Вы можете использовать медиа-запросы для этого. Он позволяет указать точки останова (т. Е. Размеры экрана), на которых будет отображаться HTML-рендеринг. Это позволит пользователю рабочего стола просматривать мобильный вид, просто изменив размер окна.

http://www.w3schools.com/css/css_rwd_mediaqueries.asp

+0

Это ясно, но я не могу использовать только медиа-запрос. Прежде всего, у меня уже есть два отдельных html-макета и secon всего одного вида - модальное окно, а другая - обычная страница –

1

В моем случае решение было рядом я Blaze для переключения между шаблонами, как посоветовал мне Мишель Floyd, и помощники были просто переданы DataContext для обоих шаблонов. Мой общий HTML вид страницы и часть Js шаблона ниже

<template name="signUpTutor"> 
{{#if equals view 'mobile'}} 
    {{> Template.dynamic template="signUpTutorMobile" data=dataContext}} 
{{else}} 
    {{> Template.dynamic template="signUpTutorDesktop" data=dataContext}} 
{{/if}} 

Template.signUpTutor.helpers({ 
'equals': function (a, b) { 
    return a == b; 
}, 
'dataContext': function() { 
    var dataContext = {} 
    dataContext.subjects = Subjects.find(); 
    dataContext.ageOptions = function() { 
     var ageOptions = []; 
     for (var i = 0, a = 19; a <= 99; i++, a++) { 
      ageOptions[i] = a; 
     } 
     return ageOptions; 
    }; 
    dataContext.experienceOptions = function() { 
     var experienceOptions = []; 
     for (var i = 0, a = 1; a <= 60; i++, a++) { 
      experienceOptions[i] = a; 
     } 
     return experienceOptions; 
    }; 
    return dataContext; 
} 

});