I_D*_*ing 16 angularjs angularjs-orderby
orderBy在我的输入框列表中应用后,如果我编辑任何字段,它立即开始排序,我松散焦点.我尝试挖掘角度代码并发现他们在orderBy的属性上应用了类似于$ watch的东西,因此每当值更改时,它会对列表进行排序.是否有任何方法可以在编辑时禁用orderBy?我不想让orderBy在编辑文本时对数据进行排序.任何帮助将不胜感激
注意:我想使用orderBy并且不需要任何替代方法,例如从任何控制器本身对列表进行排序.我只是希望orderBy在页面加载时对列表进行一次排序,然后保持相当.
sur*_*lit 11
我正在使用orderBy可以使用angular-sortable重新排序的列表,并遇到了类似的问题.
我的解决方案是手动执行排序,通过orderBy在页面初始化时调用控制器内的过滤器,然后在必要时调用它,例如在重新排序列表后调用回调函数.
您可以覆盖指令以将更新时刻更改为您希望重新排序的时刻.您也可以不使用ng-model和依赖自定义指令.
该线程讨论覆盖输入指令以更改由tge blur事件触发的模型更新.看看小提琴.
虽然您可能会覆盖该指令,但您不应该这样做,并且@Liviu T.在下面的注释中解释和举例说明的最佳解决方案是创建一个自定义指令,删除事件键盘绑定并添加一个模糊.这是指令代码,这里是Liviu的plunker:
app.directive('modelChangeBlur', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attr, ngModelCtrl) {
if (attr.type === 'radio' || attr.type === 'checkbox') return;
elm.unbind('input').unbind('keydown').unbind('change');
elm.bind('blur', function() {
scope.$apply(function() {
ngModelCtrl.$setViewValue(elm.val());
});
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
<input type="text" ng-model="variable" model-change-blur/>
Run Code Online (Sandbox Code Playgroud)
不幸的是,由于Angular事件不是名称空间,因此您必须删除以前添加的任何事件.
| 归档时间: |
|
| 查看次数: |
7993 次 |
| 最近记录: |