내 Knockout/Sammy SPA에서 내 Sammy 경로의 ViewModel 데이터에 액세스하려고하지만 Sammy 경로는 전에 내 녹아웃 동작 전에 실행됩니다.Sammy 경로의 녹아웃 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());
이 나는 또한에 따라 배열에서 페이지를 검색하는 시도 ... 내가 첫 번째 페이지와 동일한 self.selectedPage()
을 설정하고 있습니다 때문에 초기 노선에 작동하지만, 이후의 경로가 작동하지 않습니다 route
속성을 정확히 selectedPage
루트 이벤트의 범위 내에서 오른쪽 페이지에 관찰 설정할 수 있습니다 Sammy 경로에 self.selectedPage()
설정하지만 그보기 모델의 속성에 액세스하려고하면 : self.selectedPage().title
, 나는 console.log(self.selectedPage())
에 속성이 표시 될 것이므로 undefined
으로 돌아 오십시오.
누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?
어떻게'selectedPage'가 귀하의 경우 Sammy 라우팅에 관련이 있습니까? 코드를 확장 할 수 있습니까 –
ViewModel에서 정보를 가져 와서 수동으로 처리하는 대신 Sammy.Title과 같은 함수로 전달할 수 있기를 바랍니다. 나는이 예제에서'pages' 배열을 단순화했습니다. 이후 Sammy 경로에서 selectedPage()를 설정하는 방법을 알아 냈지만'self.selecedPage(). title'과 같은 뷰 모델 속성에 액세스하려고 할 때마다 나는'undefined'를 얻습니다. 설명 할 수 있습니까? 왜 그럴 수 있니? – Brandon