我设置了一个范围滑块,范围为0-2hr,时间以分钟为单位计算,然后像这样转换为hh:mm:10min,20min,1hr 20min,2hr。
但是现在我正在尝试ng-repeat
使用范围滑块指定的范围来过滤一堆项目,而我很难做到这一点。
这是我所做的http://cdpn.io/LDusa
我正在使用http://danielcrisp.github.io/angular-
rangeslider/demo/
作为范围滑块。
这是代码:
var app = angular.module('myApp', ['ui-rangeSlider']);
app.controller('myCtrl', function ($scope) {
$scope.sliderConfig = {
min: 0,
max: 120,
step: 10,
userMin: 0,
userMax: 30
};
$scope.times = [
{"time": "20"},
{"time": "50"},
{"time": "30"},
{"time": "10"},
{"time": "85"},
{"time": "75"},
{"time": "95"},
{"time": "100"},
{"time": "80"},
{"time": "200"},
{"time": "260"},
{"time": "120"},
{"time": "62"},
{"time": "68"},
{"time": "5"},
{"time": "116"}
];
});
app.filter('customFilter', function () {
return function (value) {
var h = parseInt(value / 60);
var m = parseInt(value % 60);
var hStr = (h > 0) ? h + 'hr' : '';
var mStr = (m > 0) ? m + 'min' : '';
var glue = (hStr && mStr) ? ' ' : '';
return hStr + glue + mStr;
};
});
app.filter('range', function() {
return function(input, min, max) {
min = parseInt(min);
max = parseInt(max);
for (var i=min; i<=max; i++)
input.push(i);
return input;
};
});
JADE(如果您更喜欢HTML,可以使用以下http://html2jade.org/将其转换回html
):
div(ng-app="myApp")
div(ng-controller='myCtrl')
div(range-slider='', pin-handle='min', attach-handle-values='', prevent-equal-min-max='', step='{{sliderConfig.step}}', min='sliderConfig.min', max='sliderConfig.max', model-min='sliderConfig.userMin', model-max='sliderConfig.userMax', filter='customFilter')
div(range-slider, prevent-equal-min-max='', attach-handle-values='', min='sliderConfig.min', max='sliderConfig.max', model-min='sliderConfig.userMin', model-max='sliderConfig.userMax', filter='customFilter')
div(ng-repeat="time in times | range:sliderConfig.userMin:sliderConfig.userMax")
| {{ item.time | customFilter }}
我如何才能使其正常工作,以便仅time
在范围滑块指定的范围内时才显示项目?
将sliderConfig传递到过滤器中,以找到在范围滑块上设置的当前最小值和最大值。确保您的对象位于数组中。
<div range-slider="range-slider"
min="sliderConfig.min"
max="sliderConfig.max"
model-min="sliderConfig.userMin"
model-max="sliderConfig.userMax">
</div>
...
// Pass the slider config into the filter
<div ng-repeat="time in times | rangeFilter:sliderConfig">
{{ time.time | customFilter}}
</div>
...
$scope.times = [
{time: '20'},
{time: '50'},
...
];
rangeFilter具有第二个参数“ rangeInfo”,我们可以从中获取2个值。
app.filter('rangeFilter', function() {
return function( items, rangeInfo ) {
var filtered = [];
var min = parseInt(rangeInfo.userMin);
var max = parseInt(rangeInfo.userMax);
// If time is with the range
angular.forEach(items, function(item) {
if( item.time >= min && item.time <= max ) {
filtered.push(item);
}
});
return filtered;
};
});
希望能帮助到你。
问题内容: 我遇到的情况是表单跨越了几页(可能并不理想,但这就是事实)。我想为整个表单提供一个范围,以便您随身携带,以便用户在步骤之间来回移动时很容易记住状态。 所以我需要用非常伪的代码来做: 组 单击一个链接,然后将其路由到新模板(可能使用同一控制器)。 仍应与最后一页上的值相同。 是否以某种方式持久保存示波器的数据是解决此问题的正确方法,还是还有其他方法?您是否甚至可以创建一个在路由之间具有持
问题内容: 在指令内部创建 隔离作用域 使我们可以将 外部作用域 映射到 内部作用域 。我们已经看到了六种映射到属性的不同方法: = attr &attr @attr = 和 @ 这些作用域映射选项分别做什么? 问题答案: 这可能会造成混淆,但是希望有一个简单的示例可以阐明这一点。首先,让我们将模型绑定与行为分开。 这是一个小提琴,应该有助于将它们联系在一起:http : //jsfiddle.n
问题内容: 我想查询日期范围内的elasticsearch文档。我现在有两个选择,两个都适合我。已经测试了他们两个。1.范围查询2.范围过滤器 由于我现在的数据集很小,因此无法测试它们的性能。两者有什么区别?哪个会导致更快地检索文档和更快地响应? 问题答案: 查询和过滤器之间的主要区别在于评分。查询将返回每个文档具有相对排名得分的文档。过滤器没有。这种差异使过滤器更快,有两个原因。首先,它不会产生
问题内容: 在下一个稳定的AngularJS发行时,我将应用程序从 1.0.8 迁移到 1.2 。 在AngularJS 1.0.8中 ,可以为诸如的指令设置隔离范围。然后,该指令将使用其自己的功能而不是控制器的功能。 Java脚本 在AngularJS 1.2中, 此行为不再起作用。单击该按钮将立即激活控制器的功能。 参见以下jsFiddle比较: 角1.0.8 角1.2.0 到底发生了什么变化
问题内容: 我创建了一个包装jQuery插件的指令,并将该插件的配置对象从控制器传递到指令。(作品) 在配置对象中是一个我想在事件上调用的回调。(作品) 在回调中,我想修改控制器的$ scope上的属性,该属性 不起作用 。Angular无法识别出该属性由于某种原因而发生了变化,这使我相信回调中的$ scope与控制器的$ scope不同。我的问题是我不明白为什么。 有人能指出我正确的方向吗? 单
问题内容: 在Angularjs中,是否有特定的原因要在控制器中使用,并且要在指令链接函数中使用(不使用)?这仅仅是公约还是其他? 问题答案: 该情况下,当你在控制器的依赖注入范围内喷射基于匹配变量名使用,在这种情况下,因为名字是行不通的。 对于指令的情况下,注塑基于位置,所以你可以命名你的变量或或任何东西。链接功能的指令顺序为 因此,第一个元素始终是作用域对象。