Knockout/Sammy SPA で、Sammy ルートの ViewModel データにアクセスしたいのですが、Knockout 動作の前に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()
サミールートの設定に基づいて配列からページを取得しようとしました。これselectedPage
により、ルートイベントのスコープ内でオブザーバブルが適切なページに正しく設定されますが、プロパティにアクセスしようとするとのようなそのビュー モデルの:self.selectedPage().title
が返されます。プロパティが表示されるundefined
ため、これは奇妙です。console.log(self.selectedPage())
誰かが私が間違っていることを指摘できますか?