首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Knockout Sortable -如何知道可排序列表已更新

Knockout Sortable -如何知道可排序列表已更新
EN

Stack Overflow用户
提问于 2017-02-02 07:06:21
回答 2查看 1.6K关注 0票数 0

我需要在文档的底部添加文本“列表已更新!”如果用户更新了可排序列表的顺序。

你能给我一些提示,如何以击倒的方式正确地完成它吗?

代码语言:javascript
复制
var Task = function(name) {
  this.name = ko.observable(name);
}

var ViewModel = function() {
  var self = this;
  self.tasks = ko.observableArray([
    new Task("Get dog food"),
    new Task("Fix car"),
    new Task("Fix fence"),
    new Task("Walk dog"),
    new Task("Read book")
  ]);
};

ko.applyBindings(new ViewModel());
代码语言:javascript
复制
div {
  padding: 5px;
  margin: 5px;
  border: black 1px solid;
}

ul {
  padding-bottom: 10px;
}

.container {
  float: left;
  width: 150px;
  background-color: #ffd;
}

.item {
  background-color: #DDD;
  cursor: move;
  text-align: center;
}

#results {
  float: left;
  width: 150px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.min.js"></script>

<script src="https://rawgit.com/rniemeyer/knockout-sortable/master/build/knockout-sortable.js"></script>

<script src="https://rawgit.com/rniemeyer/knockout-sortable/master/build/knockout-sortable.js"></script>




<div class="container" data-bind="sortable: tasks">
  <div class="item">
    <a href="#" data-bind="text: name"></a>
  </div>
</div>


<div id="results">
  <ul data-bind="foreach: tasks">
    <li data-bind="text: name"></li>
  </ul>
</div>

JSfiddle link

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-02 08:37:39

添加一个afterMove处理程序来更新"was updated“标志。然后使用该标志来显示您的消息。

例如,

代码语言:javascript
复制
<div class="container" data-bind="sortable: { data: tasks,
                                              afterMove: setIsUpdated.bind($root) }">
代码语言:javascript
复制
var ViewModel = function() {
  this.tasks = ko.observableArray([
    new Task("Get dog food"),
    new Task("Fix car"),
    new Task("Fix fence"),
    new Task("Walk dog"),
    new Task("Read book")
  ]);
  this.isUpdated = ko.observable(false);
};
ViewModel.prototype.setIsUpdated = function () {
  this.isUpdated(true);
};
票数 1
EN

Stack Overflow用户

发布于 2017-02-02 07:17:02

您可以通过订阅可观察数组和一个新的可观察对象来跟踪通知的可见状态来完成此操作。

代码语言:javascript
复制
self.isUpdated = ko.observable(false);
self.tasks.subscribe(function(value){
    self.isUpdated(true);
});

然后在tasks元素下面添加一个带有if或visible绑定的通知。

代码语言:javascript
复制
<span style="color: red" data-bind="if: isUpdated">The list was updated!</span>

编辑:Fiddle

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

https://stackoverflow.com/questions/41991496

复制
相关文章

相似问题

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