javascript - knockout 可排序数组未正确显示嵌套元素

标签 javascript jquery knockout.js jquery-ui-sortable knockout-sortable

我是 Knockout.js 的新手,最近我开始使用 JQuery 和 Knockout-sortable 项目。对于我的项目,我使用复杂的数据结构来显示某些表单。在某一时刻,我试图制作一个包含问题的嵌套可排序页面数组。我可以获得一个包含所有页面及其信息的容器,但我无法让容器正确显示问题。

以下内容位于 HTML 中:

                <h2><span data-bind="text: DiscoveryFormUpdateLabel"></span></h2>
                <div class="pagesList" data-bind="foreach:discoveryForm">
                    <div class="row">
                        <div class="text-area">
                            <label>Discovery Form Name: </label>
                            <input data-bind="value:Name" width="400" />
                        </div>
                    </div>
                    <br />
                    <br />
                    <br />
                    <div class="row">
                        <div class="text-area">
                            <label>Welcome (HTML):</label>
                            <textarea data-bind="value: Welcome" rows="12" cols="89"></textarea>
                        </div>
                    </div>
                </div>

                <ul data-bind="sortable: {template: 'pages', data:discoveryFormPages}"></ul>

                 <script type="text/html" id="pages">
                    <li>
                        <div class="row">
                            <label>Name: </label>
                            <input data-bind="value:Name" />
                        </div>

                        <div class="row">
                            <label>Questions:</label>
                        </div>

                        <ul data-bind="sortable: {foreach:Questions}">
                            <li>Foo</li>
                        </ul>

                        <ul data-bind="foreach:Questions">
                            <li>Foo</li>
                        </ul>

                        <ul data-bind="sortable: { template: 'questions', foreach:Questions}" width="80%"></ul>
                    </li>
                </script>

                <script type="text/html" id="questions">
                    <li>
                        <div class="row">
                            <label>Subject:</label>
                            <textarea data-bind="value:Subject" cols="45"></textarea>
                        </div>
                        <div class="row">
                            <label>Type:</label>
                            <select data-bind="options: $root.questionTypes, optionsText:'Description', value:Type"></select>
                        </div>
                        <div class="row">
                            <label>Tagline:</label>
                            <textarea data-bind="value: Tagline" cols="45"></textarea>
                        </div>
                        <div class="row">
                            <label>Visible:</label>
                            <input type="checkbox" data-bind="checked:Visible" />
                        </div>
                    </li>
                </script>

pages 模板中,我使用三种不同的方式来尝试显示问题。第一个方法显示一个可排序的 Foo,第二个方法显示正确数量的 Foo,第三个方法显示一个没有项目的空白可排序区域。我正在开发 JS Fiddle,但我必须从数据库中获取复杂的信息,所以这需要时间。任何帮助也将受到欢迎:)。

那么,我的问题是为什么我会得到三种不同的东西,我哪里出错了?

编辑:我的模板基于 this .

我正在使用this项目。

我设想最终结果有点类似于 this .

最佳答案

在 jsFiddle 中获取示例可能会有所帮助,但它看起来像:

对于这个:<ul data-bind="sortable: {foreach:Questions}">

您想要 sortable: Questions相当于 sortable { data: questions }

对于这个:<ul data-bind="sortable: { template: 'questions', foreach:Questions}" width="80%"></ul>

您想要:sortable: { template: 'questions', data: Questions }

所以,主要只是使用data而不是foreach

关于javascript - knockout 可排序数组未正确显示嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15250353/

相关文章:

javascript - 如何在浏览器本地存储中存储数据

php - 从目录收集图像的 javascript 图像 slider

jquery - 需要修复我的 GroupList(IOS Sticky Headers)控件的特定于 IOS 的样式

javascript - 使用knockout js构建的无限滚动在IE9中不起作用

asp.net - 清理 ASP.NET MVC 应用程序中的输入

javascript - Knockout Object Literals 不适用于谷歌地图?

javascript - Mocha js 与 react js

javascript - 从组件文件和 View 模型生成原始 HTML 字符串

javascript - jQuery中如何动态传递 'options:contains'中的变量获取值

jquery - 我如何应用 jQuery.click 来自动点击元素的第一级?