【问题标题】:Sammy JS Routing in click event点击事件中的 Sammy JS 路由
【发布时间】:2014-07-30 11:11:11
【问题描述】:

只是想确保我用 SammyJS 做的事情是正确的,因为它不像我。

我有一个在代码中处理的点击事件,它必须在代码中处理。所以.. 我希望发生以下情况:

  1. 用户单击按钮并运行代码。
  2. 代码导航到新的路线事件。
  3. 调用路由处理程序代码。 (也更新了网址)

我发现了以下方法:

  1. 用户单击按钮 - 调用 EventContext.redirect 方法和 app.runRoute 方法。

我是 SammyJS 的新手,但我使用过 durandal,在这种情况下,我使用了 router.navigate 方法,但我找不到直接对应的方法。

执行上述操作的结果是更新了 URL 并运行了路由,所以我得到了我想要的,但感觉有点笨拙。有更好的方法吗?

【问题讨论】:

    标签: javascript url-routing sammy.js


    【解决方案1】:
    app.setLocation('#/YourPathHere');
    

    window.location = '#/YourPathHere';
    

    来自文档:

    Sammy.Application setLocation (new_location) 委托 location_proxy 设置当前位置。有关位置代理的更多信息,请参阅 Sammy.DefaultLocationProxy。 参数

    new_location 一个新的位置字符串(例如'#/')

    http://sammyjs.org/docs/api/master/Sammy.Application.methods.setLocation

    【讨论】:

      【解决方案2】:

      您可以为指定链接设置路由,Sammy 在单击这些链接时应该自动路由到路由事件。 在路由中,您可以通过 ajax 加载内容或重定向到另一个页面。 一个小例子:

      HTML:

      <section id="navi"> 
        <a href="#/1">One</a>
        <a href="#/2">Two</a>
        <a href="#/3">Three</a>
      </section>
      

      JS:

      ;(function($) {
        var app = $.sammy(function() {
          this.get('#/:page', function() {
            var jmnu = $( 'a[href="#/' + this.params['page'] + '"]' );
            // do whatever you want to do before pageload
            // even trigger click events manual
      
            // and then load page:
            $('#main').html('<p>this is site ' + this.params['page'] + '</p>');
          });
       });
      
        $(function() {
          app.run('#/1')
        });
      })(jQuery);
      

      查看演示: http://jsfiddle.net/0qpx7dob/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-16
        • 2017-08-10
        • 1970-01-01
        • 1970-01-01
        • 2020-06-26
        相关资源
        最近更新 更多