使用 Angular JS 动态更新 jQuery UI 属性的最佳方法
Best way to dynamically update jQuery UI attribute with Angular JS?
我有一个属性,我在其中添加了"可拖动"指令。这将启用 jQuery UI 可拖动组件。我的指示如下:
testModule.directive('draggable', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.draggable({ revert: true });
}
}
});
我有一个范围函数,可以检查是否应该启用/禁用这些项目。我正在使用 ng 类指令来添加/删除禁用的类。它看起来如下(它显然做了其他事情,但为了简单起见,我只返回 false):
$scope.enabled = function(){
return false;
}
因此,要申请我的残疾课程,我可以执行以下操作:
<span draggable data-ng-repeat="item in items" data-ng-class="{disabled: enabled()}">{{item.Name}}</span>
我的问题是,如果我想做一些更简单的事情,并且在启用时返回 false,那么最好的方法是什么。我查看了使用 $watch,但它不一定依赖于项目更改,而是依赖于应用程序的状态,它结合了多种因素。我想要的只是一些简单的东西,如果启用返回错误抓取元素并使用 jQuery 像这样禁用可拖动 - $(element).draggable("禁用")
我觉得应该有一种简单的方法来做到这一点,但我似乎无法获得正常运行的指令。
感谢您的任何帮助!
您可以将项的状态传递给已创建的draggable
指令。
.HTML:
<div draggable="item.enabled" data-ng-repeat="item in items" ng-class="{disabled: !item.enabled }">
{{item.name}}
</div>
JavaScript:
//in your controller
$scope.items = [{ name:'item1', enabled: false}, { name:'item2', enabled: true}, { name:'item3', enabled: true}, { name:'item4', enabled: false}, { name:'item5', enabled: true}];
app.directive('draggable', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
$(element).draggable({ revert: true, disabled: !scope.$eval(attrs.draggable) });
}
}
});
http://jsbin.com/aZosUrE/4/
相关文章:
- 什么'是使输入上禁用的属性与Meteor辅助对象反应的最佳方法
- 检查链接对象形式中未定义属性的最佳实践是什么
- BackboneJS重新排列集合中模型的最佳方式,同时为每个模型维护0索引的有序属性
- 复制元素的最佳方式是:只复制元素的类型和属性
- 扩展或定义新的dat.gui属性控制器的最佳方法
- 使用方法和属性定义javascript对象的最佳方法是什么?(如果可能以本机方式)
- 通用化用于切换禁用属性的代码的最佳方法
- JavaScript 中通过公共属性“交叉”两个 JSON 对象数组的最佳方式
- 添加属性/方法的明确最佳方法
- 使用 Angular JS 动态更新 jQuery UI 属性的最佳方法
- 关于在 Vue.js 中设置数据对象属性的最佳实践
- 在 JavaScript 对象文本中组织方法和属性的最佳方式
- 执行属性别名的最佳方法
- 在 IE8 中为对象中的每个属性添加附加属性的最佳方法是什么?
- jQuery中根据其数据属性包装元素的最佳方法是什么?
- 使用 javascript 实现属性-值搜索界面的最佳方法
- EmberJS:基于另一个属性重新加载控制器模型的最佳方法
- 使用jQuery命名属性的最佳模式
- 在ReactJS中重用映射循环中的属性-最佳实践
- JSON属性最佳实践