2

次の JavaScript と html で行が表示されない理由はありますか? グリッド オブジェクトにオブジェクトが表示されますが、テーブルには表示されません。私は何か間違ったことをしていますか?

モデルを見る

    app.viewModel.members.eventSchedule = {
            gyms: ko.observableArray(null),
            grid: ko.observableArray([]),

    .
    .
    .

Ajax リクエストからの初期グリッドの作成

function populateGrid(grid) {

        var mapping = {
            'Matchup': {
                create: function (options) {
                    if (options.data) {
                        return ko.mapping.fromJS(options.data);
                    }

                    return null;
                }
            }
        };

        viewModel.grid(ko.mapping.fromJS(grid.Dates, mapping)());
        viewModel.gyms(grid.Gyms);
    }

新しい行を追加

                         var timeRow = {
                            Time: ko.observable(data.Newtime),
                            Games: ko.observableArray([])
                        };

                        var gymCourts = viewModel.gymCourts();
                        for (var k = 0; k < gymCourts.length; k++) {
                            timeRow.Games.push(new Game(data.Dates, data.NewTime, gymCourts[k].Id, gymCourts[k].Order));
                        }

                        viewModel.grid()[0].Times().push(timeRow);

テーブル HTML

    <tbody data-bind="foreach: grid">
                                <tr>
                                    <td class="empty"></td>
                                    <td class="date-container" data-bind="attr: { colspan: $parent.gymCourts().length }">
                                        <div class="date" data-bind="html: Date"></div>
                                    </td>
                                </tr>
                                <!-- ko foreach: Times -->
                                <tr class="time-games">
                                    <td class="time-container">
                                        <a href="#" class="time" data-bind="html: Time, click: $root.members.eventSchedule.editTime.edit.bind($data, $parent)"></a>
                                    </td>
                                    <!-- ko foreach: Games() -->
                                    <td class="game-container draggable-item-container clearfix">
                                        <div class="game clearfix draggable-active draggable-item" data-bind="if: $data.Matchup, css: { 'empty' : !$data.Matchup, 'ui-droppable-disabled': $data.Disabled }, dynamicClass: { position: ($data.Matchup ? $data.Matchup.DivisionOrder() : 0) }, draggableGameHandler : { disabled: !$data.Matchup, disabledDrop: $data.Disabled() }">
                                            <span data-bind="html: (Matchup.PoolName() + Matchup.AwayTeam.Number())"></span> vs. <span data-bind="html: (Matchup.PoolName() + Matchup.HomeTeam.Number())"></span>
                                        </div>
                                    </td>
                                    <!-- /ko -->
                                </tr>
                                <!-- /ko -->
                            </tbody>
4

1 に答える 1

1

次の行を確認してください: viewModel.grid()[0].Times().push(timeRow); 新しい timeRow を observableArray 内の配列にプッシュしています。これはリスナーに自動的に通知しません。viewModel.grid()[0].Times.push(timeRow); を試すことができますか? 代わりは?

于 2012-05-28T23:08:58.777 に答える