如何用sammy设置基本网址?

时间:2012-12-04 15:29:15

标签: url sammy.js

我正在寻找javascript路由库,我来到Sammy,所以我正在学习它。

到目前为止,我看到的所有示例都显示热门,可以根据域名作为基本网址进行路由,例如www.mydomain.com/#,然后所有路由都会继续

但我正在我的localhost目录中的嵌套目录中进行一些试验,比如/ wwwroot / play / sammy /所以我的基本网址将是

http://localhost/~rockdeveloper/play/sammy/# 

然后所有路线必须继续,例如:

http://localhost/~rockdeveloper/play/sammy/#/products
http://localhost/~rockdeveloper/play/sammy/#/clients
http://localhost/~rockdeveloper/play/sammy/#/search

有没有办法设置这个基本网址所以我可以继续这样配置sammy路由?

get('#/products')
get('#/clients')
get('#/search')

到现在为止我必须将主字符串连接到路线,我希望它比这更聪明......

baseurl='/~rockdeveloper/play/sammy/#/search';
get(baseurl + '#/products');

感谢。

1 个答案:

答案 0 :(得分:2)

Sammy是一个前端框架,你不需要提供baseurl,因为所有的调用都是在url的基础上在客户端进行的,所以在英镑符号之后的其余路径只是用于sammy使用。

例如:

http://localhost/~rockdeveloper/play/sammy/#/products
http://localhost/~rockdeveloper/play/sammy/#/products/iphone
http://localhost/~rockdeveloper/play/sammy/#/products/iphone/cases/all

您的基本路径是

http://localhost/~rockdeveloper/play/sammy/

在所有这些中。其余的只是sammy路线,(把它们想象为GET params)

此外,您的路线必须以可从锚点无缝调用的方式定义。以下是我的路线文件的一部分:


app = $.sammy('body', function() {
    //define events
    this.bind('addNew',function(e,data){
        //data.name = data.name.split(' ').join('_');
        for(x in mapa[data.element]){
        if(mapa[data.element][x].name.toLowerCase() == data.name.toLowerCase()){
                return alert('There is already an element with the same name');
            break;
        }
    }
    ap('Adding: '+data.element+' with the name: '+data.name);
    mapa[data.element].push({name:data.name});
    this.trigger('sections',{action:data.element});
    });


  // define routes
  this.get('#/', function() {
    $('#menuright').html('');
    $('.customMenu').remove();
    $('#holder').html('').attr({style:''});
  });

    this.get('#/someroute/:variable', function() {
        /*
        ...
        ...
        ...
        */
    });

  this.before(function(){
    if(typeof(app.historial)=='undefined'){
        app.historial = [];
    }
    app.historial.unshift(this.path.split('#')[1]);
    if(app.historial.length>2) app.historial.length = 2;
    do_something();
  });
});

根据您的观点,您只需使用以下内容:

<a href="#/someroute/{{name}}"><i class="icon-bookmark"></i> {{name}}</a>
//le me here using mustache :{