0

DurandalJS と KnockoutJS を使用した SPA があります。最初のページでアイテムをクリックできるようにしてから、そのアイテムの 2 番目のページを読み込みます。これは、セカンダリ ページにアクセスする方法です。

var goToDetails = function (selectedDailyLog) {

        var url = '#/dailylog/' + selectedDailyLog.id();

        //durandal/plugins/router is sammy.js

        router.navigateTo(url);

    };

2 番目のページで ko.applyBindings を呼び出そうとすると、次のエラーが継続的に発生します。

不明なエラー: バインドを解析できません。メッセージ: ReferenceError: ルーターが定義されていません。バインディング値: foreach: router.visibleRoutes

セカンダリ ページの JavaScript は次のとおりです。

define(['config', 'durandal/system', 'services/logger', 'services/dataservice'],
function (config, system, logger, dataservice) {

    var owners = ko.observableArray();
    var selectedOwner = ko.observable();
    var dailyLog = ko.observable({ started: 'one' });
    var routeCriteria;

    //#region Internal Methods
    function activate(routeData) {      

        routeCriteria = routeData;
        dataservice.getOwners(owners);

        logger.log('Daily Log Activated with Id: ' + routeData.id.toString(), null, 'dailylog', true);

        return true;
    }

    var vm = {
        activate: activate,
        title: 'Daily Log',
        owners: owners,
        selectedOwner: selectedOwner,
        dailyLog:dailyLog
    };
    ko.applyBindings(vm);
    return vm;

});

助けてくれてありがとう。

4

2 に答える 2

0

おそらく、ビューがいくつかのナビゲーション リンクをバインドするためのルート データを探していることを意味します。投稿したコードでは、ルート オブジェクトを返しません。

アプリケーションがどのように設定されているかわかりませんが、これは役立つ可能性があります。

define(
[
    'config', 
    'durandal/system', 
    'services/logger', 
    'services/dataservice', 
    'durandal/plugins/router'
],
function (config, system, logger, dataservice, router) {

... your code here ...

var vm = {
    activate: activate,
    title: 'Daily Log',
    owners: owners,
    selectedOwner: selectedOwner,
    dailyLog:dailyLog,
    router: router
};
ko.applyBindings(vm);
return vm;
于 2013-06-22T06:39:18.003 に答える