当我更改 observableArray 时,Knockoutjs 不会更新我的 UI

发布于 2024-12-24 16:01:18 字数 659 浏览 1 评论 0原文

这是我的模板:

<tr>
    <td>
        <table>
            <thead>
                <th>
                    <span>Option name:</span>
                </th>
            </thead>
            <tbody data-bind="template: {name: 'optionChoiceTemplate', foreach: choices, templateOptions:{choiceArray: choices} }"></tbody>
        </table>
        <button data-bind="click: function(){choices.push('');}">Add new</button>
    </td>
</tr>

但是当我单击“添加新”按钮时,我的视图不会更新以包含带有空字符串的新选项。我已经在调试器中检查了空字符串是否已添加到选项中,并且我已确保选项是一个 observableArray,还有什么可能出错?

This is my template:

<tr>
    <td>
        <table>
            <thead>
                <th>
                    <span>Option name:</span>
                </th>
            </thead>
            <tbody data-bind="template: {name: 'optionChoiceTemplate', foreach: choices, templateOptions:{choiceArray: choices} }"></tbody>
        </table>
        <button data-bind="click: function(){choices.push('');}">Add new</button>
    </td>
</tr>

But when I click the "Add new" button, my view doesn't update to include the new option with the empty string. I've checked in the debugger that the empty string is added to the choices, and I've made sure that choices is an observableArray, what else might be going wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

魄砕の薆 2024-12-31 16:01:18

问题是,当将 jQuery 模板插件与 template 绑定和 foreach 选项结合使用时,空字符串将被视为 null 值并且不会呈现。

您可以通过使用对象 {text: ''} 并绑定 text 或通过推送空字符串以外的内容(例如单个空格)来解决此问题。

或者,如果您能够迁移到 Knockout 2.0 并使用本机模板,那么您的空字符串项目将正确呈现。

The issue is that when using the jQuery Templates plugin with the template binding with the foreach option, empty strings are treated as null values and are not rendered.

You could work around this by using an object {text: ''} and binding against text or by pushing something other than an empty string (like a single space).

Alternatively, if you are able to move to Knockout 2.0 and use the native templates, then your empty string items will be rendered properly.

凉风有信 2024-12-31 16:01:18

我创建了一个小提琴,它使用 HTML 来显示项目列表,并允许用户通过两种方式添加新项目。第一种方法是使用您创建的点击函数。第二种方法是使用点击绑定。

这应该可以回答你的问题。

http://jsfiddle.net/johnpapa/4PfUr/

I created a fiddle that uses your HTML to display a list of items, and allows the user to add a new item in two ways. The first way is using your click function you created. The second way is using a click binding.

This should answer your question.

http://jsfiddle.net/johnpapa/4PfUr/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文