1

javascript ルーティング ライブラリを探していて、Sammy に来て、学んでいます。

これまでに見たすべての例は、www.mydomain.com/# のように、ドメインからベース URL に基づいてルーティングを続行し、すべてのルートが続行することを示しています。

しかし、私は自分のlocalhostディレクトリ内のネストされたディレクトリ内でいくつかの試行を行っています./wwwroot/play/sammy/と言うので、私のベースURLは

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

そして、次のようにすべてのルートを続行する必要があります。

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

このベース URL を設定して、次のようなサミー ルートの設定に進む方法はありますか?

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/

それらのすべてで。残りは単なるサミー ルートです (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 に答える