首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >击倒可排序数组未正确显示嵌套元素

击倒可排序数组未正确显示嵌套元素
EN

Stack Overflow用户
提问于 2013-03-06 22:45:39
回答 1查看 481关注 0票数 2

我是新接触Knockout.js的,最近我开始使用JQuery和knockout-sortable项目。对于我的项目,我使用了一个复杂的数据结构来显示一些表单。在某一点上,我试图创建包含问题的页面的嵌套可排序数组。我能够获得一个容器,其中包含所有页面及其信息,但我在让容器正确显示问题时遇到了问题。

以下是HTML中的内容:

代码语言:javascript
复制
                <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小提琴,但我必须从数据库中获取复杂的信息,所以这需要时间。任何帮助都会受到欢迎:)。

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

编辑:我的模板基于this

我使用的是this项目。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-06 23:07:38

在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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15250353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档