Nano Hash - криптовалюты, майнинг, программирование

Как использовать вкладки Materialize css в Meteor?

Новое в Meteor.js и Materialize CSS Framework. Я не совсем понимаю, как можно динамически подключать вкладки к трем разным, поэтому, когда пользователь щелкает по ней, свойство .tab indicator/active скользит вместе с желаемым путем маршрута. Если я сделаю это:

клиент/приложение.html

  <template name="tabs">
    <ul class="tabs nav-tabs hide-on-med-and-down">
      <li class="tab col s4" id="nt1"><a href="/page1">Page One</a></li>
      <li class="tab col s4" id="nt2"><a href="/page2">Page Two</a></li>
      <li class="tab col s4" id="nt3"><a href="/page3">Page Three</a></li>
    </ul>
  </template>

клиент/app.js

  Template.layout.rendered = function() {
    $('ul.tabs').tabs();
  }

Индикаторы вкладок работают, но не меняют ссылки на нужную страницу. Это похоже на то, что он блокирует возможность перехода на страницу. Мне нужна помощь в том, как это сделать, я был в этом в течение некоторого времени. Спасибо.


  • попробуй Template.tabs.rendered . 29.11.2015
  • @Мат. Черт, это не сработало. 29.11.2015
  • вы добавили маршрутизатор ?? 29.11.2015
  • @Мат. Нравится Router.route('/page-one');? Если так, то да. 29.11.2015

Ответы:


1

Еще одно обновление, если вы не хотите определять каждую вкладку, вы можете сделать что-то подобное

Js

//Manual Method
/*Template.tabs.rendered = function() {
   if(Router.current().route.path() === '/page2'){
      $("#nt2 a").addClass('active');
    }else if(Router.current().route.path() === '/page3'){
      $("#nt3 a").addClass('active');
    }  
    $('ul.tabs').tabs(); 
}


Template.tabs.events({
  'click #nt1': function(){
    Router.go('/');
  },
  'click #nt2': function(){
    Router.go('page2');
  },
  'click #nt3': function(){
    Router.go('page3');
  }

})*/ 

//Auto Method
Template.tabs.rendered = function() {   
    $("#"+Router.current().route.getName()).addClass('active');     
    $('ul.tabs').tabs(); 
  }


Template.tabs.events({
  'click .tabs li': function(e, t){
    var href = e.target.id;     
    Router.go(href);
  }  
})

Маршрутизатор

Router.configure({
  layoutTemplate: 'layout',  
});

Router.route('/', function () {  
  this.render('page-one');  
},{
  name: 'page-one'
});

Router.route('/page2', function () {
  this.render('page-two');
},{
  name: 'page-two'
});

Router.route('/page3', function () {
  this.render('page-three');
},{
  name: 'page-three'
});

HTML

<template name="layout">
  {{> tabs}}

  {{> yield}} 
</template>
<template name="tabs">
    <!--Manual Method-->
    <!--<ul class="tabs nav-tabs hide-on-med-and-down">
       <li class="tab col s4" id="nt1"><a href="/">Page One</a></li>
       <li class="tab col s4" id="nt2"><a href="/page2">Page Two</a></li>
       <li class="tab col s4" id="nt3"><a href="/page3">Page Three</a></li>
    </ul>-->

    <!--Auto Method-->
    <ul class="tabs nav-tabs hide-on-med-and-down">
      <li class="tab col s4"><a id="page-one" href="/">Page One</a></li>
      <li class="tab col s4"><a id="page-two" href="/page2">Page Two</a></li>
      <li class="tab col s4"><a id="page-three" href="/page3">Page Three</a></li>
    </ul>
</template>

<template name="page-one">
    <p>i am page-one</p>
</template>

<template name="page-two">
    <p>i am page-two</p>
</template>


<template name="page-three">
     <p>i am page-three</p>
</template>
29.11.2015
  • Это не сработало. Что он делает, так это запускает активное состояние по ссылке «Страница 1», но когда вы нажимаете «Страница 2», он переходит на страницу 2 без активного состояния и так далее. Вы можете получить активное состояние на нем, щелкнув его еще раз. Нужно понять, как заставить его вести себя правильно. Хотя это хороший шаг. Спасибо. 29.11.2015
  • @JohnHuntington хорошо, я обновил свой ответ, это полный рабочий пример. Если вам нужно увидеть его в действии, просто скажите мне, чтобы я его загрузил. 30.11.2015

  • 2

    Это может быть полезно, если у вас все в порядке с рендерингом вкладок без Router.

    Допустим, это шаблоны, которые вы хотите отображать на основе щелчка по вкладке:

    <template name="page1">
    .....
    </template>
    
    <template name="page2">
    .....
    </template>
    
    <template name="page3">
    .....
    </template>
    

    Теперь в вашей области рендеринга:

    <template name="display">
        {{>tabs}}
        {{#if activeTab 'nt1'}}
            {{>page1}}
        {{/if}}
    
        {{#if activeTab 'nt2'}}
            {{>page2}}
        {{/if}}
    
        {{#if activeTab 'nt3'}}
            {{>page3}}
        {{/if}}
    </template>
    

    Наконец, в вашем файле javascript:

    activeTab = new ReactiveVar('nt1'); //Your default tab
    
    Template.display.helpers({
        activeTab: function(tab){
            return (activeTab.get() == tab);
    });
    
    Template.tabs.events({
      'click #nt1': function(){
        activeTab.set('nt1');
      },
      'click #nt2': function(){
        activeTab.set('nt2');
      },
      'click #nt3': function(){
        activeTab.set('nt3');
      }
    });
    
    29.11.2015
  • Это хорошо. Я ценю ответ. Я буду практиковать с тоже. Спасибо. 30.11.2015

  • 3

    Попробуйте 'Template.tabs.onRendered(function(){', а не 'Template.tabs.rendered = function(){'

    В итоге ваша инициализация вкладок должна выглядеть так:

        Template.tabs.onRendered(function(){
          $("ul.tabs").tabs();
        });
    
    01.01.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..