w moich oczach, to sytuacje błaga o obserwowanej subskrypcji.
...
<title>{FALL BACK TEXT}</title>
...
Widok Model
ViewModel = function() {
var self = this;
self.PageTitle = ko.observable(null);
self.PageTitle.subscribe(function(newValue){ document.title = self.PageTitle() });
//change PageTitle to see your handy work in action
self.PageTitle("Hello World!");
};
EDIT:
jako poprawka do mojej poprzedniej odpowiedzi, chciałbym wysunąć następujące. Czy moja poprzednia sugestia zadziała? Tak, działa bardzo ładnie. Jednak manipulacja DOM w samym modelu widoku nie "dokładnie" postępuje zgodnie z paradygmatem MVVM. Rzeczywistym "najlepszym" podejściem byłoby stworzenie niestandardowego powiązania, które ustawia tytuł dokumentu na aktualizację konkretnego obserwowalnego.
...
<title data-bind="htmlDocumentTitle: PageTitle()">{FALLBACK TEXT}</title>
...
Widok Model
ViewModel = function() {
var self = this;
self.PageTitle = ko.observable(null);
self.init = function(){
self.PageTitle("My page title from an obersvable");
};
//init the viewmodel
self.init();
};
I wreszcie nasze błyszczące wiążący "słuchać" zmian do zaobserwowania (uwaga użycie wyłącznie działaniem update)
ko.bindingHandlers.htmlDocumentTitle = {
update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var fallbackTitle = "My document title";
var title = ko.unwrap(valueAccessor());
if(!title || title == null && title == "")
title = fallbackTitle;
document.title = title;
}
};
Początkowo zwyczaj Wygląda na to, że to rozwiązanie może wyglądać na mniej skalowalne, ale pamiętaj, że możemy tworzyć "pseudo-dziedziczenie" za pomocą Knockout View Models za pomocą "call()".
Nie chcę zachować edycji moją odpowiedź - jakaś szansa na to oddanie swoich prac tagu HTML? '' –
Czy możesz powiązać właściwość Title w swoim ViewModel z czymś bardziej przyziemnym, na przykład rozpiętością, i czy wszystko jest w porządku? –
Zaktualizowałem trochę mój kod. Tak, mogę powiązać z danymi "Tytuł" w innych miejscach z powodzeniem. To tylko tytuł strony, który nie działa. –