0

我使用车辆的属性、搜索和注册进行此路由测试

我的代码

$(函数(){

  路由器 = can.Control({

      “车辆”:函数(){
        console.log("哈希是 #!vehicles")
      },
      “车辆/:注册”:功能(数据){
        console.log("哈希是#!vehicles/:registration "+data)
      },
      “车辆/:搜索”:功能(数据){
        console.log("哈希是#!vehicles/:search "+data)
      }

    });


    can.route("车辆");
    can.route("车辆/:注册");
    can.route("车辆/:搜索");

    can.route.ready();

    新路由器(文档);

});

和测试

测试一

can.route.attr("搜索", "121-TYU-898")

一个 {_data:对象,_cid:“.map1”,_computedBindings:对象,__bindEvents:对象,_bindings:2…}
__bindEvents:对象
_绑定:2
_cid:“.map1”
_computedBindings:对象
_data:对象
路线:“车辆/:搜索”
搜索:“121-TYU-898”
__proto__: t.Construct

没问题,但控制台中没有消息(“哈希是 #!vehicles/:search”+data)

测试二

can.route.attr("注册", "333-TYU-898")

一个 {_data:对象,_cid:“.map1”,_computedBindings:对象,__bindEvents:对象,_bindings:2…}
__bindEvents:对象
_绑定:2
_cid:“.map1”
_computedBindings:对象
_data:对象
注册:“121-TYU-898”
路线:“车辆/:注册”
__proto__: t.Construct

没关系,但是控制台中没有消息(“哈希是#!vehicles/:registration”+data)

测试三

can.route.attr("搜索", "444-TYU-555")

一个 {_data:对象,_cid:“.map1”,_computedBindings:对象,__bindEvents:对象,_bindings:2…}
__bindEvents:对象
_绑定:2
_cid:“.map1”
_computedBindings:对象
_data:对象
注册:“121-TYU-898”
路线:“车辆/:注册”
搜索:“333-TYU-808”
__proto__: t.Construct

我不明白,对我来说,我期待这个答案

一个 {_data:对象,_cid:“.map1”,_computedBindings:对象,__bindEvents:对象,_bindings:2…}
__bindEvents:对象
_绑定:2
_cid:“.map1”
_computedBindings:对象
_data:对象
路线:“车辆/:搜索”
搜索:“444-TYU-555”
__proto__: t.Construct

能否帮忙理解一下,谢谢

非常感谢达夫,我能做到吗?

当属性页是一个特定的值时听?

例子

$(函数(){

  路由器 = can.Control({

      “路线”:函数(){
        console.log("哈希为空")
      },
      '{can.route} page=search':函数(数据){
              console.log("哈希是 "+data.page+" id 为 "+data.id )

      },{can.route} page=registration': 函数(数据){
              console.log("哈希是"+data.page)
      }

    });

    can.route(':page/:id');
    can.route.ready();

    新路由器(窗口);

});

can.route.attr({page: "搜索", id: "123-jlkj-1231"})

并在控制台中显示

哈希是搜索 id 123-jlkj-1231

我测试过,但这不起作用:)

你看到我想做什么了吗?

4

1 回答 1

1

想象一下 CanJS 路由占位符就像 JavaScript 中的变量名。就像是

function first(param1) {
}

function first(param2) {
}

与 is 相同vehicles/:registration并且vehicles/:type匹配相同的路由。您可能想要做的是:

var Router = can.Control({
  "vehicles route" : function(){
    console.log("the hash is #!vehicles")
  },
  "vehicles/:type route" : function(data){
    console.log(data.type);
  }
});

new Router(document);
can.route.ready();

如本小提琴所示:http: //jsfiddle.net/4M58j/

您还可以匹配路径"vehicles/search""vehicles/registration route"(注意缺少:用作变量占位符的路径。

于 2014-01-15T05:56:26.777 回答