DataTables mRender功能与视图模型

时间:2014-10-03 05:58:58

标签: javascript data-binding knockout.js jquery-datatables

我将表格实现为http://www.datatables.net/examples/api/form.html,但在javascript中我无法通过我的viewmodel(" vm")在" mRender&#中数据绑定值34 ;.使用测试渲染功能正常工作。如何在javascript代码中实现与viewmodel的绑定?

 function CreateNewDllTable(url, vm) {
    var oTable = $('#test-table').dataTable({
            "bProcessing": true,
            "bServerSide": true,
            "bPaginate": false,
            "scrollY": "250px",
            "bSort": false,
            "bFilter": false,
            "bInfo": false,
            "sAjaxDataProp": "dataValues",
            "sAjaxSource": url
            },
            "bAutoWidth": false,
            "aoColumns": [
            { "mData": "name" },
            {                        
                 type: 'text',
                "mData": "description",
                "mRender": function (data) {
                    if (data == true) {
                        return '<input type="text"/>';
                    } else {
                        return '<input type="text"/>';
                    }
                }
            },
            {
                "mRender": function (data) {
                    return "<select class='multiselect'>"
                                + "<option>Value1</option>"
                                + "<option>Value2</option>"
                                + "<option>Value3</option>"
                                + "<option>Value4</option>"
                                + "<option>Value5</option>"
                            + "</select>";
                }
            }
            ],
             "fnDrawCallback": function () {
                $("select.multiselect").multiselect();           
            }, 
    }

例如在html中绑定:

  <select class="multiselect" data-bind="
        options: vm.types,
        value: vm.selectedTypeId,
        optionsText:'type',
        optionsValue: 'typeId'">
    </select>

1 个答案:

答案 0 :(得分:0)

        For example you can used this code:

       "mRender": function () {
var returnValue = "<select class='multiselect'>";
var types = vm.types;
var listItems = "";
for (var i = 0; i < types.length; i++) {                                           
       listItems += "<option value='" + types[i].typeId + "'" + " selected='selected'" + ">" + types[i].type + "</option>";                                           
}
return returnValue.concat(listItems, "</select>");       
}