В моем ночном/Sammy SPA я хотел бы получить доступ к данным ViewModel на моем маршруте Сэмми, однако маршрут Сэмми выполнен до моего поведения нокаута. Он работает по первоначальному маршруту, потому что я заходящий self.selectedPage()
равен первой странице, но она не работает для последующих маршрутов ...Доступ к нокауту ViewModel Данные на маршруте Сэмми
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()
на маршруте Сэмми, который правильно установит selectedPage
, наблюдаемый на нужную страницу в пределах области действия маршрута, но когда я попытаюсь получить доступ к свойству этой модели вида, например: self.selectedPage().title
, I верните undefined
, что нечетно, потому что console.log(self.selectedPage())
покажет свойство.
Может кто-нибудь указать, что я делаю неправильно?
Как 'selectedPage' высылается на прокладку Sammy в вашем случае? Не могли бы вы расширить свой код? –
Что я хотел бы сделать, это получить информацию из ViewModel для перехода к таким функциям, как Sammy.Title, вместо того, чтобы делать это вручную. В этом примере я упростил массив 'pages'. С тех пор я выяснил, как установить selectedPage() в маршруте Sammy, но в любое время я пытаюсь получить доступ к свойству модели представления, например 'self.selecedPage(). Title', я получаю' undefined' ... вы можете объяснить почему это может быть? – Brandon