AngularJS 光滑轮播按属性过滤
AngularJS slick carousel filter by attribute
我正在使用 https://github.com/devmark/angular-slick-carousel
我想添加一个搜索过滤器,这样它将只显示在“data-test-id”属性中具有“searchStr”的幻灯片。
HTML:
<slick settings="slickConfig" >
<div ng-repeat="i in number"
data-test-id="{{i.title}}"
class="slick-item">
{{i.title}}
</div>
</slick>
JS:
$scope.slickConfig.method.slickFilter(searchStr);
我应该如何使用 slickFilter 函数?
在这种情况下,您需要更新或重新启动 slick-carousel。所以,它会非常简单,几乎与任何其他过滤器一样:
您的看法:
<!-- You have Your Filter -->
<input type="text" ng-model="filter" ng-change="updateNumber4()"/>
<!-- You have your SlickCarousel, it's important to include ng-if -->
<slick class="slider" settings="slickConfig4" ng-if="slickConfig4Loaded">
<!-- IMPORTANT: I'm filtering in ng-repeat by the ng-model in the input -->
<div ng-repeat="i in number4 | filter:filter" >
<div style="width:{{ i.label }}px;height:100px; background:{{i.background}}">{{i.label}}</div>
</div>
</slick>
但是,如您所见,input
有一个 ng-change
,而我在 slick
上有 ng-if
。这是不同的部分。
在你的控制器中你需要:
$scope.updateNumber4 = function () {
$scope.slickConfig4Loaded = false;
$timeout(function() {
$scope.slickConfig4Loaded = true;
});
};
此外,考虑到您必须在控制器中导入 timeout
。
你可以玩我刚做的这个例子:https://plnkr.co/edit/1v3DYmfLyqvjedKz
我正在使用 https://github.com/devmark/angular-slick-carousel 我想添加一个搜索过滤器,这样它将只显示在“data-test-id”属性中具有“searchStr”的幻灯片。
HTML:
<slick settings="slickConfig" >
<div ng-repeat="i in number"
data-test-id="{{i.title}}"
class="slick-item">
{{i.title}}
</div>
</slick>
JS:
$scope.slickConfig.method.slickFilter(searchStr);
我应该如何使用 slickFilter 函数?
在这种情况下,您需要更新或重新启动 slick-carousel。所以,它会非常简单,几乎与任何其他过滤器一样:
您的看法:
<!-- You have Your Filter -->
<input type="text" ng-model="filter" ng-change="updateNumber4()"/>
<!-- You have your SlickCarousel, it's important to include ng-if -->
<slick class="slider" settings="slickConfig4" ng-if="slickConfig4Loaded">
<!-- IMPORTANT: I'm filtering in ng-repeat by the ng-model in the input -->
<div ng-repeat="i in number4 | filter:filter" >
<div style="width:{{ i.label }}px;height:100px; background:{{i.background}}">{{i.label}}</div>
</div>
</slick>
但是,如您所见,input
有一个 ng-change
,而我在 slick
上有 ng-if
。这是不同的部分。
在你的控制器中你需要:
$scope.updateNumber4 = function () {
$scope.slickConfig4Loaded = false;
$timeout(function() {
$scope.slickConfig4Loaded = true;
});
};
此外,考虑到您必须在控制器中导入 timeout
。
你可以玩我刚做的这个例子:https://plnkr.co/edit/1v3DYmfLyqvjedKz