2

main.js でルート ルーターを定義し、そこにナビゲーション コードを配置しました。ページの中にリストがあり、選択したリストアイテムからビューページを開きたいです。HTMLページで $root.router.retreive() を使用して、ページ上のデータを取得できます。

対応するviewModelでその値を取得するにはどうすればよいですか?

ナビゲーション コード:

self.gotoPage = function(data, event) 
{
   self.router.store(data.id);
   self.router.go(event.target.id);
};

バインディング コード:

oj.Router.sync().then(
  function () {
    // bind your ViewModel for the content of the whole page body.
    ko.applyBindings(new RootViewModel(), document.getElementById('globalBody'));
  },
  function (error) {
    oj.Logger.error('Error in root start: ' + error.message);
  }
);
4

1 に答える 1

1

を使用$moduleして、アクティブな viewModel で定義された任意の変数にいつでもアクセスできます。例: $module.router.retreive()HTML バインディングで使用します。

ViewModel で値を探している場合はrouter.moduleConfig、コンテキストを拡張して として渡すことができますmoduleParams

またはko.dataFor、HTML セレクターを使用してバインディング コンテキストからデータを取得するために使用できます。

コメント通り…

setup: function(routerParent) {
    var router, latestState;
    if (routerParent == undefined) {
        router = oj.Router.rootInstance;
    } else {
        if (routerParent.getChildRouter(routerParent.currentState().id)) {
            routerParent.getChildRouter(routerParent.currentState().id).dispose();
        }
        router = routerParent.createChildRouter(routerParent.currentState().id);
    }
    router.configure(function(stateId) {
        if (stateId) {
            latestState = stateId;
            return new oj.RouterState(stateId);
        }
    });
    oj.Router.sync().then(function(value) {
        //console.info("Calling Router Sync: Result = " + value);
    }, function(reason) {
        console.info("Calling Router Sync: Result = " + reason);
    });
    return $.extend(router, { latestState: latestState });
},
于 2016-12-20T15:56:26.157 に答える