knockoutjs sortable binding - 如何获得targetparentnode?

时间:2014-02-24 17:50:32

标签: knockout.js jquery-ui-sortable

我有一个可排序列表列表,我将一些项目拖到这些列表中。

我需要知道我保存项目的列表的ID,以便我可以创建一个链接记录并将其保存在服务器端。

每个可排序列表的DOM元素名称等于该列表的ID。

令人敬畏的knockoutjs可排序绑定有arg.sourceParentNode但不是arg.targetParentNode。我如何获得targetParentNode?

谢谢!

我正在构建一个将事物链接在一起的屏幕,基本上只是创建数据库表之间的关系并将记录插入到多对多表中。我希望这很简单,我在这里失踪......

我不可能是唯一一个知道哪个DOM元素对应哪个observableArray有用的人,所以我希望我在这里找不到简单的东西,而且有人可以轻松解决这个问题。我总是觉得奇怪的是,淘汰赛没有一个DomElementForObservable函数,但在过去我总能解决这个问题并且不需要它。在这种情况下,我很难过。有什么想法吗?

获取可观察对象的DOM元素的一般方法非常棒。

1 个答案:

答案 0 :(得分:1)

一个好的选择是尝试将此功能放在视图模型中,而不是依赖于DOM元素。例如,您可以将id附加到observableArray而不是DOM元素。喜欢:

this.myItems = ko.observableArray();
this.myItems.id = "myId";

然后,您可以查看arg.targetParent.id

或者,您可以在您的viewmodel中订阅,如:

this.myItems.subscribe(function(newValue) {
   this.createLink("myItems", newValue); //or whatever you need to do in your code
}, this);

beforeMoveafterMove处理程序将eventui对象作为第二个和第三个参数传递,因此您可以检查它们并找到它的父级元件。

Knockout没有从observable获取DOM元素的通用方法,因为observable可能绑定到许多元素。希望这会给你一些想法。