1

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

到目前为止,我看到的所有示例都表明,从域作为基本 url 进行路由是很热门的,比如 www.mydomain.com/# 然后所有路由都继续

但我正在我的本地主机目录中的嵌套目录中进行一些试验,例如 /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

有什么方法可以设置这个基本 url,这样我就可以像这样继续配置 sammy 路由?

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

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

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

谢谢。

4

1 回答 1

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 参数)

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


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 :{
于 2012-12-05T19:26:29.873 回答