使用Jquery模板从observableArray填充表行

时间:2013-03-04 14:24:16

标签: knockout.js jquery-templates

我正在使用knockoutjs v1.2.0和Jquery模板。我会使用data-bind:foreach等但我发现它只出现在knockoutjs的v2.0.0中。所以我必须使用jquery模板。

我的aspx文件包含以下代码:

....
....
....
<tbody data-bind="template: {name: 'tasksTemplate', foreach: form.model.tasks}">                           
                            </tbody>                                
                        </table>
                    </td>
                </tr>
            </table>
        </div>
    </div>
    <script id="tasksTemplate" type="text/html">
                                <tr>
                                    <td>
                                        <input id="Selected" type="checkbox" data-bind="checked: ${isSelected}" />
                                    </td>
                                    <td>
                                        <select id="CableCode" data-bind="options: CableCodes, value: ${CableCodeId}, optionsText: 'Code', optionsValue: 'Id'" style="width: 95%"></select>
                                    </td>
                                    <td>
                                        <input type="text" />
                                    </td>
                                    <td>
                                        <input type="text"/>
                                    </td>
                                    <td>
                                        <select style="width: 95%"></select>
                                    </td>
                                    <td>
                                        <input type="text" class="datePicker" />
                                    </td>
                                    <td>
                                        <input type="text" class="datePicker" disabled="disabled" />
                                    </td>
                                    <td>
                                        <input type="text" disabled="disabled" />
                                    </td>
                                </tr>   
                             </script> 
</asp:Content>

和我保存表单对象的js文件(包含所有函数和observable等)都有这段代码:

....
....    
self.tasks = ko.observableArray([]);
    self.addTask = function () {
        self.tasks.push({'isSelected': '', 'CableCodeId': '' });
    };
....
....

但即使当我加载页面时,当我尝试使用addTask函数向表中添加一行时,我得到一个错误:预期的标识符,字符串或数字。 < / p>

我试过从isSelected和CableCodeId中取消单引号,但仍然没有。

我还试图关闭第二个数据绑定(关于CableCode的那个)所以我只能检查第一个(isSelected)但我仍然得到相同的错误。

我也在使用IE 8。

1 个答案:

答案 0 :(得分:0)

为什么你的绑定参数附近有$?

checked: ${isSelected}

删除它然后重试。

checked: isSelected

看看是否有效。