Я не могу найти способ заставить это работать без использования PHP, и я не хочу использовать PHP. Дело в том, что у меня есть список с некоторыми опциями:

enter image description here

И я хочу установить переменную сеанса, когда я нажимаю на одну ссылку.

Я пытался сделать <a onClick="displayAllContainers();">All containers</a>, тогда в моем JS я пытался сделать

`function displayAllContainers() {
  console.log("Display all");
}`

Но это не сработало.

[РЕДАКТИРОВАТЬ] Эта скрипка не работает, но я могу поставить весь код, не задавая вопрос, который делает 500 линий так

import { Template } from 'meteor/templating';
import { Session } from 'meteor/session'
import { InfosContainers } from '/both/collections/infosContainers.js';
import { InfosMachines } from '/both/collections/infosMachines.js';

import './main.html';
import '../imports/ui/controlPanel.js';
import '../imports/ui/container.js';
import '../imports/ui/machine.js';
import '../imports/ui/chart.js';
import '../imports/ui/controlPanel.html';
import '../imports/ui/container.html';
import '../imports/ui/machine.html'


if (Meteor.isClient) {
  //subscribe the publication of the server
  Meteor.subscribe('infosContainers');
  Meteor.subscribe('infosMachines');
}


function displayAllContainers() {
  console.log("Display all");
}


Template.body.onRendered(function () {
});


Template.body.helpers({
  //return all objects of the collection machines with the specified state
  infosMachines() {
    return InfosMachines.find({});
  },
  //return all objects of the collection containers with the specified state
  infos(state) {
    return InfosContainers.find({stateContainer: state});
  },
  //return all containers
  infosCtn(){
    return InfosContainers.find({});
  },
  //return true if we have >=1 container running. It's the emergency button
  urgence() {
    return InfosContainers.find({stateContainer: 'running'}).count() > 0;
  }
});
  <!-- form containers -->
                        <div class="col-md-6 col-sm-12 col-xs-12">
                            <div class="x_panel">
                                <div class="x_title">
                                    <h2>Containers</h2>
                                    <ul class="nav navbar-right panel_toolbox">
                                        <li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
                                        </li>
                                        <li class="dropdown">
                                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-wrench"></i></a>
                                            <ul class="dropdown-menu" role="menu">
                                              <li><a onClick="displayAllContainers();return false;">All containers</a>
                                              </li>
                                              <li><a href="#">Only running containers</a>
                                              </li>
                                              <li><a href="#">Only paused containers</a>
                                              </li>
                                              <li><a href="#">Only stopped containers</a>
                                              </li>
                                            </ul>
                                        </li>
                                        <li><a class="close-link"><i class="fa fa-close"></i></a>
                                        </li>
                                    </ul>
                                    <div class="clearfix"></div>
                                </div>
                                <div class="x_content">
                                    <br/>
                                    {{#each infosCtn}}
                                      {{> container}}
                                    {{/each}}
                                </div>
                            </div>
                        </div>
                        <!-- /form containers -->
0
Jerome 12 Янв 2017 в 09:37

4 ответа

Лучший ответ

Хорошо, так что спасибо всем за вашу помощь, потому что вы все помогли мне найти решение, и оно есть:

1) Мне нужно использовать шаблоны событий в моем JS

Template.body.events({
    'click #anchorid': function (e) {
      console.log("saucisse")
    }
});

2) И мне пришлось использовать идентификатор в HTML, но я могу удалить OnClick

<a id="anchorid">All containers</a>
0
Jerome 12 Янв 2017 в 07:07

Вы должны вернуть false, чтобы предотвратить поведение по умолчанию. Просто измените это так:

<a onClick="displayAllContainers();return false;">All containers</a>

1
vishnuvp 12 Янв 2017 в 06:51

Попробуй это, < Сильный > HTML

<a onClick="displayAllContainers()" href="javascript:void(0);">All containers</a> 

Js

function displayAllContainers() {
  console.log("Display all");
}

< Сильный > ИЗМЕНИТЬ

< Сильный > HTML

<a onClick="Meteor.call('displayAllContainers');
" href="javascript:void(0);">All containers</a> 

< Сильный > JS

Meteor.methods({
    'displayAllContainers': function(){
        console.log("Hello world");
    }
});
1
Rahul 12 Янв 2017 в 07:03

Это работает, JSFiddle

<script language="javascript">
function displayAllContainers(){
  console.log("Display all");
}
</script>
<a onclick="displayAllContainers()">
  All Containers
</a>

Напишите свою функцию, как показано ниже, и она должна работать,

displayAllContainers = function(){
  console.log("Display all");
}

Я не знаю, почему это работает, я задаю вопрос, поставлю здесь ссылку. Вопрос SO

1
Community 23 Май 2017 в 12:16