gpt4 book ai didi

javascript - AngularJS 流沙

转载 作者:数据小太阳 更新时间:2023-10-29 06:02:34 27 4
gpt4 key购买 nike

有没有办法实现 jQuery 的 Quicksand plugin在 Angular ?也许有一个实现,但我似乎找不到。

也许这样做的策略会对我有所帮助,因为流沙需要一个列表,然后将新列表作为参数接收,但是使用 Angular 重新呈现数据的方式我不知道该怎么做。

最佳答案

我使用 masonry 指令 + ng-animate 为进入/离开动画实现了类似的东西,这里是一个 CSS 动画演示(带有 chrome vendor 前缀 CSS):

http://jsfiddle.net/g/3SH7a/

指令:

angular.module('app', [])
.directive("masonry", function () {
var NGREPEAT_SOURCE_RE = '<!-- ngRepeat: ((.*) in ((.*?)( track by (.*))?)) -->';
return {
compile: function(element, attrs) {
// auto add animation to brick element
var animation = attrs.ngAnimate || "'masonry'";
var $brick = element.children();
$brick.attr("ng-animate", animation);

// generate item selector (exclude leaving items)
var type = $brick.prop('tagName');
var itemSelector = type+":not([class$='-leave-active'])";

return function (scope, element, attrs) {
var options = angular.extend({
itemSelector: itemSelector
}, attrs.masonry);

// try to infer model from ngRepeat
if (!options.model) {
var ngRepeatMatch = element.html().match(NGREPEAT_SOURCE_RE);
if (ngRepeatMatch) {
options.model = ngRepeatMatch[4];
}
}

// initial animation
element.addClass('masonry');

// Wait inside directives to render
setTimeout(function () {
element.masonry(options);

element.on("$destroy", function () {
element.masonry('destroy')
});

if (options.model) {
scope.$apply(function() {
scope.$watchCollection(options.model, function (_new, _old) {
if(_new == _old) return;

// Wait inside directives to render
setTimeout(function () {
element.masonry("reload");
});
});
});
}
});
};
}
};
})

关于javascript - AngularJS 流沙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004569/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com