Używam Knockout 3.2 i nowego systemu komponentów. Próbuję mieć składniki, które zawierają podkomponenty.Knockout Kontekst danych składowych 3.2
Home Page (component - with HomePageViewModel) NewsFeed1 (component with HomePageViewModel.NewsFeedViewModel1) NewsFeed2 (component with HomePageViewModel.NewsFeedViewModel2)
HomePageViewModel
var viewModel = (function() {
function viewModel() {
this.message = ko.observable("Welcome to DKT!");
this.newsFeedViewModel = new gr.viewModel();
this.newsFeedViewModel2 = new gr.viewModel();
this.newsFeedViewModel.message("Message 1");
this.newsFeedViewModel2.message("Message 2");
}
return viewModel;
})();
NewsFeedViewModel
var viewModel = (function() {
function viewModel() {
this.message = ko.observable("This is the profile!");
}
return viewModel;
})();
Jak widać HomePageViewModel
zawiera zarówno NewsFeedViewModel
. Teraz chcę móc używać ich jako DataContext/BindingContext z moich dwóch składników, ale to nie działa.
home.html
<news-feed data-bind="newsFeedViewModel"></news-feed>
<news-feed data-bind="newsFeedViewModel2"></news-feed>
Oba te elementy nie używać ViewModels z HomePageViewModel
ale wykorzystuje nową NewsFeedViewModel
. Jak mogę uczynić datacontext obu tych komponentów powiązać z viewModels przechowywane w górnym składniku (home)?
Dziękuję za to rozwiązanie, będę starał wieczorem i zaktualizować wpis. – user2465083
To działa idealnie. Dziękuję za pomoc :) – user2465083
Witam ponownie, proszę spojrzeć na poniższy kod http://jsfiddle.net/fssXE/3/. Dodałem funkcję w viewModel i powiązanie go do funkcji w viewModel. W takim momencie, jeśli spróbuję uzyskać dostęp do jakichkolwiek danych z viewModel, zawsze będzie on niezdefiniowany. Nie byłem w stanie uzyskać dostępu do danych z funkcji w viewModel. – user2465083