在我的 Knockout/Sammy SPA 中,我想在我的 Sammy 路由中访问 ViewModel 数据,但是,Sammy 路由在我的 Knockout 行为之前执行。它适用于初始路线,因为我设置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
在路由事件范围内正确地将 observable 设置为正确的页面,但是当我尝试访问属性时那个视图模型,比如:self.selectedPage().title
,我回来了undefined
,这很奇怪,因为console.log(self.selectedPage())
会显示属性。
有人可以指出我做错了什么吗?