我正在寻找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');
感谢。
答案 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 :{