Я начал использовать (по состоянию на несколько часов назад) Durandal в надежде управлять представлениями и разрешать композицию в пределах одного page — предыдущий подход, также использующий Knockout, становился слишком громоздким, чтобы поддерживать его в толстом HTML-файле.
Я установил/настроил Durandal и могу создавать представления и модели представления, однако я не знаю, как получить данные в модель представления для использования в качестве основы для новая модель просмотра.
Например, у меня есть «левая панель навигации» для выбора элементов — когда элемент выбран, он обновляет «выбранный элемент», наблюдаемый в текущей модели, но он должен также загружать правильный «детальный вид». " справа: поскольку одна из причин попробовать Durandal разделить компоненты/представления, это должно исходить из отдельного представления/модели представления.
Я прочитал всю документацию, включая Composition и Использование композиции, но метод как передавать данные в модель представления мне не ясен. Кажется, я мог бы использовать представление с существующей моделью (в текущем представлении/области), но мне бы очень хотелось просто использовать некоторые данные текущей модели (т.е. идентификатор) для получения «настоящих» данных модели в вид.
Таким образом, мои вопросы;
Как обрабатывается передача исходных данных, таких как «выбранный элемент», в модель представления? Я бы предпочел использовать декларативную привязку «compose:», так как это делает KO .. KO.
Является ли это понятие наличия/передачи исходных данных правильным способом или есть лучшая альтернатива? Я видел неопределенное упоминание «activeItem», но подробности/использование ускользают от меня.
Обновление 1: я нашел Как мы обмениваемся данными между представлениями/пропусками представление данных для просмотра, но ответы отсутствуют в фактической реализации. Мне бы очень не хотелось делиться моделью представления между родителем и дочерним элементом (разные пары представление/модель представления), и я хотел бы использовать декларативный подход (без событий). Родитель не должен знать о дочернем элементе, но дочерний элемент должен получать данные от родителя.
Обновление 2: Хотя выше я намекнул, что требуется только «id», мне нужен подход, который работает с любым базовым объектом, для которого маршрутизатор не обязательно подходит. Глубокие ссылки в данном случае не важны. Однако, если вы считаете, что маршрутизатор - это способ подойти к этому, опубликуйте аргумент для такого (с подробностями) в качестве ответа, и я, по крайней мере, проголосую за него..