Knockout.js 对可排序表单元素排序后,敲除初始化空表单输入无效

Knockout.js 对可排序表单元素排序后,敲除初始化空表单输入无效,knockout.js,knockout-sortable,Knockout.js,Knockout Sortable,这里是fiddle jsfiddle.net/jw7Je 我有一个绑定到两个模板的视图模型和一个页面中的可编辑表单 这两个模板最初加载的是样本数据,通过此自定义绑定显示的表单没有样本数据 ko.bindingHandlers.emptyInit = { init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {

这里是fiddle jsfiddle.net/jw7Je

我有一个绑定到两个模板的视图模型和一个页面中的可编辑表单

这两个模板最初加载的是样本数据,通过此自定义绑定显示的表单没有样本数据

ko.bindingHandlers.emptyInit = {
    init: function(element, valueAccessor, allBindingsAccessor, 
                   viewModel, bindingContext) 
    {
        element.value = '';
    }
}

<input type="text" data-bind="value: jw_fullname, valueUpdate: 'afterkeydown', emptyInit: emptyInit" placeholder="Full Name" id="jw_fullname" />

字段会被清除,因为Knockout sortable会删除移动的元素并在其位置添加新元素


我发现这个pull请求似乎解决了这个问题:

字段被清除,因为Knockout sortable删除了移动的元素,并在它们的位置添加了新的元素


我发现这个pull请求似乎解决了这个问题:

字段被清除,因为Knockout sortable删除了移动的元素,并在它们的位置添加了新的元素


我发现这个pull请求似乎解决了这个问题:

字段被清除,因为Knockout sortable删除了移动的元素,并在它们的位置添加了新的元素



我发现这个拉动请求似乎解决了问题:

考虑提供一把小提琴来演示此行为考虑提供一把小提琴来演示此行为考虑提供一把小提琴来演示此行为考虑提供一把小提琴来演示此行为我面临的另一个问题表单元素之一是textarea这是自定义绑定到cleditor的,排序后该值在cleditor中消失,但在我以前的代码版本中不会出现这种情况。使用敲除排序表0.8.6时,“cleditor”自定义绑定工作正常,但排序表会删除节,但是,在您版本的knockout sortable中,节被移动,而不是重新创建,但是cleditor自定义绑定失败,您能让这两个节在单个文件下工作吗?或者您可以指出在最新版本的knockout sortable中要更改的行吗?这个问题似乎是jQuery UI sortable代码和CLEditor之间的问题。如果我切换回原始的Knockout sortable(),我仍然可以通过开始拖动一个部分来破坏编辑器,但将其放回原始位置。在这种情况下,Knockout sortable不会进行任何重新渲染。换言之,它只在交换位置时起作用,因为击倒排序表会重新呈现它。即使在排序或放回原始位置时,cleditor也不会打断你的小提琴。如果您认为这是jQueryUI和cleditor的一个问题,我该如何解决这个问题?我应该在cleditor定制绑定中做些什么吗?还是编辑器源js?我在控制台中也没有看到任何错误或警告。要了解我的意思,您需要将一个节拖放到同一位置。我面临的另一个问题是表单元素中的一个是textarea,它是自定义绑定到cleditor的,排序后该值仅在cleditor中消失,但是,在我以前的代码版本中没有出现这种情况。当使用knockout sortable 0.8.6时,“cleditor”自定义绑定可以正常工作,但sortable会删除节,但在您的knockout sortable版本中,节会被移动,而不是重新创建,但cleditor自定义绑定失败,您能让这两个都在单个文件下工作吗?或者您可以指出在最新版本的knockout sortable中要更改的行吗?这个问题似乎是jQuery UI sortable代码和CLEditor之间的问题。如果我切换回原始的Knockout sortable(),我仍然可以通过开始拖动一个部分来破坏编辑器,但将其放回原始位置。在这种情况下,Knockout sortable不会进行任何重新渲染。换言之,它只在交换位置时起作用,因为击倒排序表会重新呈现它。即使在排序或放回原始位置时,cleditor也不会打断你的小提琴。如果您认为这是jQueryUI和cleditor的一个问题,我该如何解决这个问题?我应该在cleditor定制绑定中做些什么吗?还是编辑器源js?我在控制台中也没有看到任何错误或警告。要了解我的意思,您需要将一个节拖放到同一位置。我面临的另一个问题是表单元素中的一个是textarea,它是自定义绑定到cleditor的,排序后该值仅在cleditor中消失,但是,在我以前的代码版本中没有出现这种情况。当使用knockout sortable 0.8.6时,“cleditor”自定义绑定可以正常工作,但sortable会删除节,但在您的knockout sortable版本中,节会被移动,而不是重新创建,但cleditor自定义绑定失败,您能让这两个都在单个文件下工作吗?或者您可以指出在最新版本的knockout sortable中要更改的行吗?这个问题似乎是jQuery UI sortable代码和CLEditor之间的问题。如果我切换回原始的Knockout sortable(),我仍然可以通过开始拖动一个部分来破坏编辑器,但将其放回原始位置。在这种情况下,Knockout sortable不会进行任何重新渲染。换言之,它只在交换位置时起作用,因为击倒排序表会重新呈现它。即使在排序或放回原始位置时,cleditor也不会打断你的小提琴。如果您认为这是jQueryUI和cleditor的一个问题,我该如何解决这个问题?我应该在cleditor定制绑定中做些什么吗?还是编辑器源js?我在控制台中也没有看到任何错误或警告。要了解我的意思,您需要将一个节拖放到同一位置。我面临的另一个问题是表单元素中的一个是textarea,它是自定义绑定到cleditor的,排序后该值仅在cleditor中消失,但是,在我以前的代码版本中没有出现这种情况。当使用knockout sortable 0.8.6时,“cleditor”自定义绑定可以正常工作,但sortable会删除节,但在您的knockout sortable版本中,节会被移动,而不是重新创建,但cleditor自定义绑定失败,您能让这两个都在单个文件下工作吗?或者您能指出在最新版本的knockout sortable中要更改的行吗?这个问题似乎是jQuery UI sortable代码和CL之间的问题
<div data-bind="sortable: data"> 
<div class="item">
       <p class="span6">
       <label>Course Name</label>
       <input type="text" data-bind="valueWithInit: jw_educname, valueUpdate: 'afterkeydown',emptyInit: jw_educname" placeholder="Course Name" class="educname" />
       </p>
       <p class="span6">
       <label>Institution Name</label>
       <input type="text" data-bind="value: jw_eduiname, valueUpdate: 'afterkeydown', emptyInit: jw_eduiname" placeholder="Insitution Name" class="eduiname" />
       </p>
  </div>
</div>
ko.bindingHandlers.emptyInit = {
    init: function(element, valueAccessor, allBindingsAccessor, 
                   viewModel, bindingContext) 
    {

            var value = ko.utils.unwrapObservable(valueAccessor()) || '';

            if (element.value !== value) {
                element.value = value;

            }else {
                element.value = '';
            }

    },
     update: function(element, valueAccessor, allBindingsAccessor, 
                   viewModel, bindingContext) 
     {
              var value = valueAccessor();
            var valueUnwrapped = ko.unwrap(value);
            //console.log(valueUnwrapped);



     }
}