在我的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
属性从数组中检索页面,并在Sammy路径中设置self.selectedPage()
,这将正确设置selectedPage
可观察到的路径事件范围内的右页,但是当我尝试访问该视图模型的属性时,例如:self.selectedPage().title
,我回到undefined
,这是奇怪的,因为console.log(self.selectedPage())
将展示该物业。
有人可以指出我做错了吗?
答案 0 :(得分:0)
定义页面对象的方式,它没有title
属性,而是pageTitle
。你试过吗
this.get('#/about', function(context) {
this.title(self.selectedPage().pageTitle);
});