2013-10-11 6 views
2

Вот шаги, которые я затем:Durandal: как вы динамически добавляете/удаляете элемент из навигационной модели?

1) новый asp.net MVC 4 проекта 2) выбрал шаблон Дюрандаль спа 3) в shell.js, добавили этот маршрут ...

{ route: 'orders/:id', moduleId: 'viewmodels/order', nav: false } 

4) добавили viewmodel- order.js:

define([], function() { 
    var Order = (function() { 
     function Order() { 
      this.orderId = ''; 
     } 
     Order.prototype.activate = function (id) { 
      this.orderId = id; 
     }; 
     return Order; 
    })(); 

    return Order; 
}); 

5) добавили view- order.html:

<h1 data-bind="text: orderId"></h1> 

6) добавлены некоторые ссылки на welcome.html:

<ul> 
    <li><a href="#orders/1">Order #1</a></li> 
    <li><a href="#orders/2">Order #2</a></li> 
    <li><a href="#orders/3">Order #3</a></li> 
    <li><a href="#orders/4">Order #4</a></li> 
</ul> 

Это прекрасно работает, я нажимаю на одном из «порядка» ссылки на странице приветствия и представления заказа открывается. Here is a zip containing the project.

Каков наилучший способ добавить заказ, который я только что открыл в навигационной панели? После нажатия на ссылку заказа я хотел бы, чтобы панель навигации выглядела так:

Durandal | Добро пожаловать | Flickr | Приказ № 1

Если я нажал на другую ссылку заказа я хотел бы навигационную панель, чтобы выглядеть следующим образом:

Дюрандаль | Добро пожаловать | Flickr | Заказ №1 | Приказ № 2

И я хотел бы быть в состоянии закрыть заказ и в конечном итоге с этим (после закрытия первого порядка):

Дюрандаль | Добро пожаловать | Flickr | Приказ № 2

И последнее, но не в последнюю очередь, При перемещении между заказами я хотел существующие представления + ViewModel экземпляров остается нетронутым (Примечание: скрипт ViewModel возвращает конструктор, так что это немного отличается от приветствия и flickr).

Любые указатели на то, как это сделать, будут очень признательны.

Вот ссылка вернуться к этому вопросу в Durandal Google Group

+0

Вы когда-нибудь разрешали это? Я пытаюсь сделать то же самое.http://stackoverflow.com/questions/21677597/how-to-dynamically-display-tabs-for-routes-in-durandal –

+0

Нет, проект, над которым я работал, некоторое время был приостановлен. он собрал резервную копию на прошлой неделе, опубликует обновление, если мы пересмотрим этот сценарий на море. –

ответ

0

Я считаю, что единственный способ, которым Вы были бы в состоянии сделать это путем повторного построения навигационной модели. Существует обсуждение групп google, в которых говорится о пользовательской навигационной навигации, где вы вызываете router.reset(), а затем выполните router.mapRoutes ([...]). {Any}, чтобы завершить это.

Я серьезно не могу придумать другой способ просто «добавить» и/или «удалить» маршрут. Это то, что вы можете захотеть выбросить на github в качестве улучшения продукта (по крайней мере для дочерних маршрутизаторов).

Смежные вопросы