2
메신저 아마도 새로운, 그리고 운동장 단일 페이지 응용 프로그램으로 시도.녹아웃, 구성 요소를 통해 관측 가능하게하는 법
각 페이지마다 구성 요소를 등록하고 구성 요소에 데이터 바인딩을 동적으로로드합니다. 나는 내 첫 번째 구성 요소에서 관찰하고 싶은 두 번째 구성 요소를 가지고 있습니다.
내 HTML 코드 :
<!-- Menu -->
<ul class="menu" data-bind="foreach: pages">
<li data-bind="text: $data,
css: { selected: $data === $root.page() },
click: $root.goToPage"></li>
</ul>
<!-- Content -->
<div id="content" data-bind="component: { name: page() + '_content', params: { cont : page() } }">
</div>
내 자바 스크립트 코드 :
function SinglePageViewModel() {
var self = this;
self.pages = ['Home','Profile','Users'];
self.page = ko.observable();
self.goToPage = function (page) {
self.page(page);
};
self.goToPage(self.pages[0]);
};
ko.components.register('Home_content', {
viewModel: function(params) {
this.headline = ko.observable(params.cont || '');
},
template:
'<h3 data-bind="text: headline"></h3><br>\
<span> Welcome <span data-bind="text: firstName"></span> <span data-bind="text: lastName"></span>!</span>'
});
ko.components.register('Profile_content', {
viewModel: function(params) {
this.headline = ko.observable(params.cont || '');
this.firstName = ko.observable("John");
this.lastName = ko.observable("Snow");
},
template:
'<h3 data-bind="text: headline"></h3><br>\
<input data-bind="value: firstName" />\
<input data-bind="value: lastName" />'
});
ko.components.register('Users_content', {
viewModel: function(params) {
this.headline = ko.observable(params.cont || '');
},
template:
'<h3 data-bind="text: headline"></h3>'
});
ko.applyBindings(new SinglePageViewModel());
나는 또한 Fiddle 있습니다. Welcome John Snow!를 어떻게 표시 할 수 있습니까? 내 기본 홈페이지에. 녹아웃과 관련된 경우 전체 시스템을 변경하는 방법에 대한 제안도 환영합니다. 내가 말했듯이 완전히 새로운 방법을 택할 수 있으므로 올바른 사용법을 배우고 싶습니다 .-