我想在按下相应的按钮时来回旋转(转盘)数组。下面的代码正是这样做的。
现在我问自己这是应该做的正确方式。我的意思是我如何重新绑定旋转函数的结果。
使用 self.list(myNewArray) 我扔掉了以前的数组。这个对吗?
$(function () {
Array.prototype.rotateLeft = function () {
var first = this.shift();
this.push(first);
return this;
}
Array.prototype.rotateRight = function () {
var last = this.pop();
this.unshift(last);
return this;
}
var numbers = [1, 2, 3, 4, 5];
function NumberViewModel(numbers) {
var self = this;
self.list = ko.observableArray(numbers);
self.rotateLeft = function () {
self.list(self.list().rotateLeft());
};
self.rotateRight = function () {
self.list(self.list().rotateRight());
};
}
var vm = new NumberViewModel(numbers);
ko.applyBindings(vm);
});
</script>
</head>
<body>
<button data-bind="click: rotateLeft">rotate left</button>
<button data-bind="click: rotateRight">rotate right</button>
<ul data-bind="template: { name: 'listTempl', foreach: list }">
</ul>
<script id="listTempl" type="text/html">
<li style="float:left;list-style:none;padding-left:5px;font-size:30px;" data-bind="text: $data"></li>
</script>
</body>
</html>