Сэмми не может найти элемент? JS - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь использовать Сэмми для моего SPA, но я не могу обработать эту ошибку:

[Sun Mar 29 2020 17:37:19 GMT+0300 (Eastern European Summer Time)] #main 404 Not Found get /  Error: 404 Not Found get / 
    at Sammy.Application.error (sammy-latest.min.js:5)
    at Sammy.Application.notFound (sammy-latest.min.js:5)
    at Sammy.Application.runRoute (sammy-latest.min.js:5)
    at Sammy.Application._checkLocation (sammy-latest.min.js:5)
    at Sammy.Application.run (sammy-latest.min.js:5)
    at app.js:23
    at app.js:24 

Похоже, приложение не находит элемент в файле HTML, но он там. Вот мой JS код и то, что я импортировал в индекс. html:

(()=>{
    const app = Sammy('#main', function(){
        console.log('Hello');
    })
    app.run('/#');
})()

HTML:

    <script src="./node_modules/jquery/dist/jquery.min.js"></script>
    <script src="./node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
    <script src="./node_modules/handlebars/dist/handlebars.min.js"></script>
    <script src="./node_modules/sammy/lib/min/sammy-latest.min.js"></script>
    <script src="./node_modules/sammy/lib/plugins/sammy.handlebars.js"></script>

(у меня есть div с id = 'main', который мне нужно использовать)

Должен ли я сделать какую-то другую конфигурацию или еще?

1 Ответ

0 голосов
/ 07 мая 2020

Как сказал @Dominique в комментарии, вы должны запускать приложение с app.run('#/') вместо app.run('/#').

Кроме того, вы не используете Sammy JS должным образом. Если вы хотите использовать "basi c" маршруты , вы можете использовать метод GET:

const app = Sammy('#main', function(){
  // Here you should create routes, and not write code

  // Example : Home page : your.site/page.html
  this.get('#/', function() {
    console.log("Welcome Home");
  });   

  // Exemple : your.site/page.html#/sayhello
  this.get('#/sayhello', function() {
    console.log("Hello");
  });   
})

Вы можете использовать URL, чтобы использовать параметры, например, если вы хотите отобразите в консоли то, что вы пишете в URL:

var app = Sammy('#main', function() {

  // msg is a variable, where its value comes from the url
  this.get('#/display/:msg',function(c) {
    console.log(c.params.msg);
  });

}

Тогда, если вы go до your.site/page.html#/display/I_love_donuts, I_love_donuts будет напечатано в консоли.

Когда я начал изучать Сэмми JS, я нашел этот очень полезный курс sh: https://www.youtube.com/watch?v=QBKm444gO0U. Я предлагаю вам посмотреть его, если вам пока не нравится Сэмми JS.

Надеюсь, это помогло!

...