En mis ojos, esta situación plantea para una suscripción observable.
...
<title>{FALL BACK TEXT}</title>
...
Ver Modelo
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:
como una enmienda a mi respuesta anterior, me gustaría poner adelante lo siguiente. ¿Funcionará mi sugerencia anterior? Sí, funciona muy bien. Sin embargo, la manipulación DOM dentro del modelo de vista en sí no sigue "exactamente" el paradigma MVVM. El mejor "enfoque" real sería crear un enlace personalizado, que establece el título del documento en la actualización de un observable particular.
...
<title data-bind="htmlDocumentTitle: PageTitle()">{FALLBACK TEXT}</title>
...
Ver Modelo
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();
};
Y, por último nuestra unión a "escuchar" para los cambios a lo observable (nótese el uso de sólo la acción de actualización)
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;
}
};
En primer encargo brillantes vistazo a esta solución puede parecer menos escalable, pero tenga en cuenta que podemos crear "pseudo-herencia" con Modelos de Vista Eliminada usando "call()".
yo no quiero seguir editando mi respuesta - cualquier posibilidad de poner esto en sus obras de etiquetas HTML? '' –
Además, ¿puede vincular la propiedad Title en su ViewModel a algo más mundano, como un tramo, y que se muestre bien? –
Actualicé mi código un poco. Sí, puedo vincular datos del 'Título' en otros lugares con éxito. Es solo el título de la página que no funciona. –