jquery-ui - 如何使用 knockout.js 添加和删除 jqueryui 选项卡

标签 jquery-ui knockout.js

我从 this sample codes 得到提示

这里附上代码

<button id='add'>add</button>

<div data-bind="template: 'tabsTmpl'"></div>
<script id="tabsTmpl" type="text/html">
    <div data-bind="jqTabs: { fx: { } }">
        <ul>
            {{each tabs}}
            <li>
                <a href="#tab-${id}">${id}</a>
            </li>
            {{/each}}
        </ul>
        {{each tabs}}
        <div id="tab-${id}" >${id}</div>
        {{/each}}
    </div>
</script>
<script>
        ko.bindingHandlers.jqTabs = {
            init: function (element, valueAccessor) {
                var options = valueAccessor() || {};
                $(element).tabs(options);
            }
        };

        function TabItem(id) {
            this.id = ko.observable(id);
        }

        var viewModel = {
            tabs: ko.observableArray([new TabItem(1), new TabItem(2), new TabItem(3)])
        };


        $(function () {
            ko.applyBindings(viewModel);

            $('#add').click(function () {
                viewModel.tabs.push(new TabItem(viewModel.tabs().length + 1));
            });
        });
    </script>

上述代码的作者使用了jquery模板引擎,但我想使用knockout.js的原生模板引擎,所以我更改了html代码如下:

<div>
    <div data-bind="jqTabs: { fx: { } }">
        <ul data-bind="foreach: tabs">
            <li>
                <a data-bind="attr:{href:'#tab-' + id()}, text:id"></a>
            </li>
        </ul>
        <!-- ko foreach: tabs -->
        <div data-bind="attr:{id:'tab-'+id()}, text:id"></div>
        <!-- /ko -->
    </div>
</div>

但是,它不起作用。 我对 native 模板引擎做错了什么? 提前致谢。

最佳答案

这是一个正常运行的版本:http://jsfiddle.net/NLGm8/32/

Knockout 与 jQuery 集成最棘手的事情之一是插件期望 DOM 元素出现的时间以及 Knockout 渲染它们的时间。

我经常发现围绕插件初始化的 setTimeout 可以解决问题,这里也做到了。

关于jquery-ui - 如何使用 knockout.js 添加和删除 jqueryui 选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12260829/

相关文章:

javascript - 这与 $(document).ready() 有什么不同?

javascript - 如何计算 HTML 页面中的 foreach 循环?

javascript - KnockoutJS - 重新绑定(bind) ViewModel

javascript - 如何从 knockout.js 中的组件订阅父模型中的 observable

jQuery UI 可排序处理在 50% 之前不移动项目

jquery - jQuery 对话框上 RegisterClientScriptBlock 调用时出现错误

jquery - 应用于 Jquery Datepicker 的表格 CSS

javascript - Magento 2在select.html中调用自定义库

javascript - knockout : limit number of characters in an observable field

Jquery UI DateTimePicker 使用 dp.change 方法向当前日期添加 3 天,并禁用 datePickerStart 和 datePickerEnd 日期中的 future 日期