Angularjs 离子-以编程方式禁用对单个离子项目的滑动
我有一个包含离子项目的离子列表<代码>可以在单个项目上滑动设置为Angularjs 离子-以编程方式禁用对单个离子项目的滑动,angularjs,ionic-framework,ionic,Angularjs,Ionic Framework,Ionic,我有一个包含离子项目的离子列表可以在单个项目上滑动设置为true。我将其切换到false以尝试禁用对项目的滑动,但这并没有禁用滑动(这是我第一次测试,以查看是否可以将条件连接到可以滑动属性) 既然can swipe=“false”不起作用,我该如何禁用某些项目 <ion-list show-reorder="data.showReorder"> <ion-item ng-repeat="i in items track by $index" class="item it
true
。我将其切换到false
以尝试禁用对项目的滑动,但这并没有禁用滑动(这是我第一次测试,以查看是否可以将条件连接到可以滑动
属性)
既然can swipe=“false”
不起作用,我该如何禁用某些项目
<ion-list show-reorder="data.showReorder">
<ion-item ng-repeat="i in items track by $index" class="item item-remove-animate"
can-swipe="true" ng-click="manageOption($index);">
<b>{{i.Name}}</b>
<ion-option-button class="button-assertive" ng-click="deleteOption($index);">
Delete
</ion-option-button>
<ion-reorder-button class="ion-navicon" on-reorder="moveOption(o, $fromIndex, $toIndex)"></ion-reorder-button>
</ion-item>
</ion-list>
{{i.Name}
删除
尝试添加
ng-show="showButton(i)"
在您的离子选项按钮或重新排序。
在您的范围内,保持逻辑:
$scope.showButton(item)
{
return item.show; //Or whatever logic you want to have.
}
希望它能起作用!祝你好运 can swipe=“false”
仅对离子列表
无效
但你可以试试:
var functions = angular.module('yourmodule', []);
functions.directive('dontSwipeMe', function() {
return {
link: function(scope, element, attr) {
element.on("dragstart", function(ev) {
ev.preventDefault();
});
}
};
});
<ion-item dontSwipeMe> </ion-item>
var functions=angular.module('yourmodule',[]);
指令('dontSwipeMe',function(){
返回{
链接:函数(作用域、元素、属性){
元素打开(“dragstart”,功能(ev){
ev.preventDefault();
});
}
};
});
我的应用程序需要它,并且我能够使用CSS类覆盖项目内容
元素上的转换,该元素作为子元素动态添加到离子项目
我的模板中包含以下内容:
<ion-item collection-repeat="report in dashboardReports" ng-class="isSwipeable(report.id)">
<p>Some content</p>
<ion-option-button ng-click="itemButton(report.id)">
</ion-item>
然后在我的CSS中,我覆盖了滑动动画,如下所示:
.swipe-disabled div.item-content {
-webket-transition: none !important;
-webket-transform: none !important;
transform: none !important;
}
我有一种感觉,这是一种黑客行为,但Eder的解决方案对我不起作用,而Ion还不支持这一点。自给自足
可以为Ion项刷指令。它不依赖外部资源:
.directive('canSwipe', function() {
return {
restrict: 'A',
require: '^ionItem',
link: function(scope, element, attr, itemCtrl) {
if(attr.canSwipe !== null && attr.canSwipe.length > 0 &&
typeof(!!attr.canSwipe) === "boolean") {
scope.$watch('!!(' + attr.canSwipe + ')', function(value) {
canSwipe(value);
});
}
canSwipe(attr.canSwipe === 'true');
function canSwipe(can) {
if (!itemCtrl.optionsContainer) {
return;
}
// Class item-options is the flag for ionic.views.ListView whether
// item can be swiped (dragged):
// if (item && item.querySelector('.item-options')) { do drag ...}
itemCtrl.optionsContainer.toggleClass('item-options', can);
// Hide options button container.
itemCtrl.optionsContainer.toggleClass('ng-hide', !can);
} // canSwipe
} // link
}; // return
}) // canSwipe directive
看
使用Ionic 1.3.1
进行测试
链接:
Github上的指令。我认为用ng if
指令将ion选项按钮
包装在div
中就可以了
.directive('canSwipe', function() {
return {
restrict: 'A',
require: '^ionItem',
link: function(scope, element, attr, itemCtrl) {
if(attr.canSwipe !== null && attr.canSwipe.length > 0 &&
typeof(!!attr.canSwipe) === "boolean") {
scope.$watch('!!(' + attr.canSwipe + ')', function(value) {
canSwipe(value);
});
}
canSwipe(attr.canSwipe === 'true');
function canSwipe(can) {
if (!itemCtrl.optionsContainer) {
return;
}
// Class item-options is the flag for ionic.views.ListView whether
// item can be swiped (dragged):
// if (item && item.querySelector('.item-options')) { do drag ...}
itemCtrl.optionsContainer.toggleClass('item-options', can);
// Hide options button container.
itemCtrl.optionsContainer.toggleClass('ng-hide', !can);
} // canSwipe
} // link
}; // return
}) // canSwipe directive