knockout.js - 将 knockoutjs 对象移动到弹出编辑表单中

标签 knockout.js

我使用 knockoutjs 将 web 服务将 json 渲染馈送到一组嵌套标签中。 (效果很好)。

所以我现在想做的是有一个弹出编辑窗口(已经使用 KendoUI\jquery 设置)来更改值。

问题是我不知道我是否出去吃午饭,这甚至是可能的......您如何将绑定(bind)对象传递给其他对象来处理编辑?

最佳答案

我在代码中做了类似的事情:

在我的 viewModel 中,我创建了一个登录函数的实例:

    this.loginDialog = ko.observable(new LoginDialog(this));

其定义有点像这样:

function LoginDialog(viewModel) {
    var self = this;
    this.viewModel = viewModel;

    this.userid = ko.observable();
    this.password = ko.observable();
    this.open = ko.observable(false);
    this.message = ko.observable();

    // more here
}

然后我有一个名为 dialog 的绑定(bind):

ko.bindingHandlers.dialog = {
    init: function(element, valueAccessor, allBindingsAccessor) {
        var options = ko.utils.unwrapObservable(valueAccessor());
        setTimeout(function() { 
            $(element).dialog(options || {});
        }, 0);

        //handle disposal (not strictly necessary in this scenario)
         ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
             $(element).dialog("destroy");
         });   
    },
    update: function(element, valueAccessor, allBindingsAccessor) {
         var shouldBeOpen = ko.utils.unwrapObservable(allBindingsAccessor().openWhen);
         var options = ko.utils.unwrapObservable(valueAccessor());
         var $elem = $(element);
         var dynamicOptions = ko.utils.unwrapObservable(allBindingsAccessor().dynamicOpts) || {};
         $elem
            .dialog(shouldBeOpen ? "open" : "close");
         if (dynamicOptions.title)
             $elem.dialog("option", "title", ko.utils.unwrapObservable(dynamicOptions.title));
    }
};

我这样称呼

<!--  ko with: loginDialog -->
<div id='logindlg' class="dialog"
    data-bind="dialog: {autoOpen: false, modal: true, closeOnEscape: false, title: 'Login', height: 300, width: 550, dialogClass: 'no-close', resizable: false}, openWhen: open">

 <!-- more stuff here -->
</div>
<!-- /ko -->

关于knockout.js - 将 knockoutjs 对象移动到弹出编辑表单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10402238/

相关文章:

jquery - Knockout.js:无法解析 JSON 中的绑定(bind)

javascript - ViewModel 内存泄漏 - 摆脱循环依赖

knockout.js - TempusDominus Knockout 绑定(bind)在初始化后不会触发更新事件

knockout.js - 在包含空字符串的数组上使用 fromJS 会将这些字符串替换为 false

javascript - 将 div 行绑定(bind)到 observableArray 中的单个项目

javascript - Knockout JS removeAll() 第二次调用失败

javascript - knockout observableArray的js副本

javascript - Select2 与 Knockout.js 初始值

javascript - 根据css样式的绑定(bind)改变aria-label

javascript - 在 TypeScript 中使用类型元素 knockout 可观察数组