Доступ к нокауту ViewModel Данные на маршруте Сэмми

Вопрос:

В моем проекте Knockout/Sammy SPA я хотел бы получить доступ к данным ViewModel на моем маршруте Sammy, однако маршрут Sammy выполняется до моего поведения в нокаут. Он работает на начальном маршруте, потому что я устанавливаю self.selectedPage() равный первой странице, но он не работает для последующих маршрутов…

function MyViewModel() {
var self = this;

self.pages = [
{'linkText': 'Home', 'pageTitle': 'Welcome', 'route': '#/'},
{'linkText': 'About', 'pageTitle': 'About Us', 'route': '#/about'},
]

self.selectedPage = ko.observable(self.pages[0]);

self.goToPage = function(page) {
self.selectedPage(page);
}

Sammy(function() {
this.use(Sammy.Title);
this.setTitle('The Base Title');

this.get('#/', function(context) {
this.title(self.selectedPage().title); //works
});

this.get('#/about', function(context) {
this.title(self.selectedPage().title); //title is undefined
});
}).run('#/');
}

ko.applyBindings(new MyViewModel());

Я также попытался получить страницу из массива на основе свойства route страницы и установки self.selectedPage() в маршруте Sammy, который правильно установит selectedPage страницу на подходящую страницу в пределах области события маршрута, но когда я пытаюсь получить доступ к свойству этой модели представления, например: self.selectedPage().title, я возвращаю undefined, что нечетно, потому что console.log(self.selectedPage()) покажет свойство.

Может ли кто-нибудь указать, что я делаю неправильно?

Лучший ответ:

Способ определения вашего объекта страницы, он не имеет свойства title, а имеет свойство pageTitle. Ты пробовал

this.get('#/about', function(context) {
        this.title(self.selectedPage().pageTitle); 
    });

Оцените статью
TechArks.Ru
Добавить комментарий