10

私はかなり素晴らしいjavascriptライブラリReclinehttp://okfnlabs.org/recline/を使用していますこれはBackboneを中心に構築されています。また、SlickGridを使用します。

かなりの数の例があり、もちろん、参照するソースコードもあります。私は自分自身でかなり長い道のりを歩んできました-自分のバックエンドを作成し、slickgridビューでデータを表示します。

ただし、例で見つけられないことの1つは、データセットにレコードを追加する方法です。アクションをボタンにバインドして、データセットの最後に空のレコードを追加できるようにします。これにより、slickgridビューを使用してデータを編集できます。

レコードを追加できるように見える唯一の方法は、サーバーへのラウンドトリップですが、実際には空白にしたくないので、有効なデータを投稿する必要があるため、そうする必要はありません。データセットの行。実際にREST経由でサーバーにデータを投稿する前に、ブラウザークライアントにいくつかの行を追加できるようにしたいと思います。

現時点では、コードは次のようになっています。

$(document).ready(function() {
var dataset = new recline.Model.Dataset({
     url: '/rest/monitors',
     backend: 'restlet',
    });

    dataset.fetch().done(function(dataset) { 



        var $el = $('#mygrid');
        var grid = new recline.View.SlickGrid({
          model: dataset,
          el: $el,
          state: {
                gridOptions: {editable: true,enableCellNavigation: true},
                columnsEditor: [
                             {column: 'monitoruntil', editor: Slick.Editors.Date },
                             {column: 'enabled', editor: Slick.Editors.Checkbox },
                             {column: 'owneremail', editor: Slick.Editors.Text},
                             {column: 'normalinterval', editor: Slick.Editors.Text}
                           ],
                columnsWidth:[{column: 'owneremail', width: 100},{column: 'url', width: 300},{column: 'lastaccessed', width:100 }]
                 }
        });
        grid.visible = true;
        grid.render();


        //Bind Save Button to a function to save the dataset

        $('#savebutton').bind('click', function() {
              //alert($(this).text());
              dataset.save();
            });

        });;

})

このコードでは、「レストレット」バックエンドで配信された既存のレコードのみを編集および保存できます。

4

1 に答える 1

4

それはあなたが探しているように見えますdataset.records.add()

ここで開発コンソールで試してください:

var dataset = new recline.Model.Dataset({
      records: [
        {id: 0, date: '2011-01-01', x: 1, y: 2, z: 3, country: 'DE', title: 'first', lat:52.56, lon:13.40},
        {id: 1, date: '2011-01-01', x: 1, y: 2, z: 3, country: 'DE', title: 'first', lat:52.56, lon:13.40},
    ]
    });
createExplorer(dataset);
var i=2;
setInterval(function() {dataset.records.add({id: i, date: '2011-01-01', x: 1, y: 2, z: 3, country: 'DE', title: 'first', lat:52.56, lon:13.40});i++;},2000);
于 2012-12-17T07:39:48.877 に答える