0

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())

誰かが私が間違っていることを指摘できますか?

4

1 に答える 1

0

titleページ オブジェクトの定義方法には、プロパティはありませんが、 pageTitle. やってみました

this.get('#/about', function(context) {
        this.title(self.selectedPage().pageTitle); 
    });
于 2013-10-03T00:22:51.263 に答える