2016-12-25 11 views
0

Я использую шаблон Hot Towel на визуальной студии 2013 с MVC 5, прямо сейчас на каждой странице моего проекта есть код по умолчанию, который исходит от горячего полотенца, но я хочу дизайн веб-сайт, который выглядит следующим образом: http://blackrockdigital.github.io/startbootstrap-stylish-portfolio/ , когда я прокрутки вниз я могу увидеть другую часть веб site.but, если я хочу использовать Дюрандаль и выбивать я думаю, что я должен использоватьusing compose привязка данных с другой привязкой данных

"data-bind="compose: { view: 'footer' }" 

моя проблема в том, что, когда я использую эту строку кода на своей домашней странице, а затем в моем footer.html используйте другой тип привязки данных (у меня есть отдельный файл сценария java для моей страницы нижнего колонтитула), например, как текстовая привязка, текст не отображается , но если я не использую привязку Compose, это сработает. так может кто-то сказать мне, как я могу создать веб-страницу, такую ​​как тот, который я хочу с помощью горячего полотенца и выбить, спасибо большое.

мой взгляд колонтитула как:

<nav class="navbar navbar-fixed-bottom"> 
<div class="navbar-inner navbar-content-center"> 
    <span class="pull-left"><a href="http://johnpapa.net/spa" target="_blank">Learn how to build a SPA </a></span> 
    <span class="pull-right"> 
     <a data-bind="attr: { href: pm, title: title }"></a> 
    </span> 
</div> 
</nav> 

и footer.js:

define(['services/logger'], function (logger) { 
var title = 'Home'; 
var pm = ko.observable('hi'); 
var vm = { 
    activate: activate, 
    title: title, 
    pm:pm 
}; 

return vm; 

//#region Internal Methods 

//#endregion 

});

они настолько просты, просто для проверки результата

и моей главной страницы, что я хочу видеть колонтитул там:

<div> 
<header data-bind="compose: { view: 'nav' }"></header> 
<section id="content" class="main container-fluid" 
    data-bind="router: { transition: 'entrance', cacheViews: true }"> 
</section> 
<footer data-bind="compose: { view: 'footer' }"></footer> 
</div> 

Но когда я запускаю мой проект результат находится ниже:

result

ответ

0

проблема заключается в том, что вы только указав view ваш колонтитул должен использовать, но не связанные с view model для вашего view.

Итак, вы хотели бы обновить compose связывания как так -

"data-bind="compose: { view: 'footer', model: 'footer' }"

я однако, хотел бы предложить для использования в observable для хранения view и соответствующего model использовать два способ связывания.

Так, в главном viewModel, вы бы иметь observable определяется как так -

self.footer = ko.observable({ 
    view: 'footer', 
    model: 'footer', 
    activationData: anyDataYouWouldLikeToInitializeYourFooterWith 
}); 

А затем обновить ваш compose связывания как так -

"data-bind="compose: footer"

Таким образом, вы можете compose различные виды динамически (в случае, если все они отображаются по одному за раз) в ваш основной вид.

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

  • Нет связанных вопросов^_^