【发布时间】:2014-10-03 08:47:15
【问题描述】:
我使用的是knockoutjs和同位素砌体布局,自定义绑定基于代码blog link here,如下图所示:
查看:
<div id="container" class="isotope" data-bind="foreach: bills">
<div class="item" data-bind="isotope: {container: '#container', itemSelector: '.item'}, style: {height: RandomHeight() + 'px'}">
<h3 data-bind="text: title"></h3>
<p>Votes: <span data-bind="text: votes"></span><p>
<p data-bind="text: desc"></p>
</div>
</div>
以及 ViewModel 和自定义绑定:
ko.bindingHandlers.isotope = function() {
var self = this;
self.init = function(element, valueAccessor, allBindings, viewModel, bindingContext) {
console.log("init...");
var value = ko.utils.unwrapObservable(valueAccessor());
var $container = $(value.container);
$container.isotope({
itemSelector: value.itemSelector,
masonry: {
columnWidth: 100
}
});
};
self.update = function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var $el = $(element);
var value = ko.utils.unwrapObservable(valueAccessor());
console.log("updating..." + value);
var $container = $(value.container);
$container.isotope('appended', $el);
};
return {
init: self.init,
update: self.update
}
}();
问题是当我添加一个新项目并将其附加到列表时,第一个项目从左到右跳转。顶部的项目应保持静态定位,只有底部的项目应随机移动,这是发生这种情况的示例屏幕截图(mid-jump_ 位于帖子底部。
请知道我做错了什么?
【问题讨论】:
-
你想要怎样......你能告诉我你想要什么输出吗?
-
嗨 Devendra,如果您多次单击“添加”按钮,您将看到第一个项目从左向右跳跃,而它应该保持静态定位...唯一的运动应该是在添加最后一块砖的网格
-
您使用的是什么浏览器?对我来说,它在 Firefox 中运行良好。或者我没有解决这个问题。
-
第一个元素在 IE 和 Chrome 中跳来跳去,已经发布了该问题的屏幕截图。
-
那么问题是第一行应该有两个元素,还是你只想要一个元素但让它保持静止?
标签: javascript jquery knockout.js jquery-isotope knockout-3.0