Основно маршрутизиране с две свойства

Правя този тест за маршрутизиране със свойства, търсене и регистрация на превозни средства

моят код

$(function() {

  Router = can.Control({

      "vehicles" : function(){
        console.log("the hash is #!vehicles")
      },
      "vehicles/:registration" : function(data){
        console.log("the hash is #!vehicles/:registration "+data)
      },
      "vehicles/:search" : function(data){
        console.log("the hash is #!vehicles/:search "+data)
      }

    });


    can.route("vehicles");
    can.route("vehicles/:registration");
    can.route("vehicles/:search");

    can.route.ready();

    new Router(document);

});

и тестовете

Тествайте едно

can.route.attr("търсене", "121-TYU-898")

a {_data: Object, _cid: ".map1", _computedBindings: Object, __bindEvents: Object, _bindings: 2…}
__bindEvents: Object
_bindings: 2
_cid: ".map1"
_computedBindings: Object
_data: Object
route: "vehicles/:search"
search: "121-TYU-898"
__proto__: t.Construct

Това е добре, но няма съобщение ("хешът е #!vehicles/:search "+data) в конзолата

Тест две

can.route.attr("регистрация", "333-TYU-898")

a {_data: Object, _cid: ".map1", _computedBindings: Object, __bindEvents: Object, _bindings: 2…}
__bindEvents: Object
_bindings: 2
_cid: ".map1"
_computedBindings: Object
_data: Object
registration: "121-TYU-898"
route: "vehicles/:registration"
__proto__: t.Construct

Това е добре, но няма съобщение ("хешът е #!vehicles/:registration "+данни) в конзолата

Тест три

can.route.attr("търсене", "444-TYU-555")

a {_data: Object, _cid: ".map1", _computedBindings: Object, __bindEvents: Object, _bindings: 2…}
__bindEvents: Object
_bindings: 2
_cid: ".map1"
_computedBindings: Object
_data: Object
registration: "121-TYU-898"
route: "vehicles/:registration"
search: "333-TYU-808"
__proto__: t.Construct

Не разбирам, аз очаквам този отговор

a {_data: Object, _cid: ".map1", _computedBindings: Object, __bindEvents: Object, _bindings: 2…}
__bindEvents: Object
_bindings: 2
_cid: ".map1"
_computedBindings: Object
_data: Object
route: "vehicles/:search"
search: "444-TYU-555"
__proto__: t.Construct

Бихте ли помогнали да разберете, благодаря

Благодаря много Даф и мога ли да направя това?

слушам кога страницата със свойства е определена стойност?

пример

$(function() {

  Router = can.Control({

      "route": function(){
        console.log("the hash is empty")
      },
      '{can.route} page=search': function(data){
              console.log("the hash is "+data.page+" with id "+data.id )

      },{can.route} page=registration': function(data){
              console.log("the hash is "+data.page)
      }

    });

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

    new Router(window);

});

и

can.route.attr({страница: "търсене", id: "123-jlkj-1231"})

и показване в конзолата

хешът е търсене с id 123-jlkj-1231

Тествах, но не става :)

Виждаш ли какво искам да направя?


person Phane    schedule 14.01.2014    source източник


Отговори (1)


Представете си контейнерите за маршрут на CanJS като имена на променливи в JavaScript. Нещо като

function first(param1) {
}

и

function first(param2) {
}

Са същите като 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();

Както е показано в този Fiddle: http://jsfiddle.net/4M58j/

Можете също да съпоставите маршрути като "vehicles/search" и "vehicles/registration route" (забележете липсващото :, което се използва като променлива palceholder.

person Daff    schedule 15.01.2014
comment
Благодаря на Даф, добавих още един отговор, бихте ли ми помогнали? слушам кога страницата със свойства е определена стойност? - person Phane; 16.01.2014
comment
Това почти би бил нов въпрос ;) Както и да е, за да работи това, трябва да включите плъгина can.Map.delegate: canjs.com/docs/can.Map.delegate.html - person Daff; 16.01.2014