当前位置: 首页 > 面试题库 >

AngularJS ng-options创建范围

毛德曜
2023-03-14
问题内容

我正在尝试创建一个select元素,该元素的页面编号为1,其中pages是一个变量,即我所拥有的页面数。我不知道该怎么做,是为了构造ng-
options表达式,以便它将给我所需的数字。这是我到目前为止的

<select ng-model="page" ng-options="???"></select>

我需要在ng-options表达式中放置什么才能使其创建我的select

<select>
    <option value="1">1</option>
    ...
    <option value="35">35</option>
</select>

我是否需要创建一个返回数字数组的函数并以某种方式在其中使用它,还是有一种更简单的方法呢?

任何帮助将不胜感激。

谢谢

编辑

发布我的问题后,我想出了一种方法,可以在控制器中创建一个名为Range的函数,该函数接受两个数字并返回一个包含该范围内所有值的数组

$scope.Range = function(start, end) {
    var result = [];
    for (var i = start; i <= end; i++) {
        result.push(i);
    }
    return result;
};

然后在HTML中

<select ng-name="page" ng-options="page for page in Range(1, pages)"></select>

这是最简单的方法还是有更好的方法?


问题答案:

你的方法很好。我想到的另一个选择是使用过滤器,因此您不必使用Range污染控制器。

JS:

var myApp = angular.module('myApp', []);
myApp.filter('range', function() {
  return function(input, min, max) {
    min = parseInt(min); //Make string input int
    max = parseInt(max);
    for (var i=min; i<max; i++)
      input.push(i);
    return input;
  };
});

HTML:

<select ng-model="page" ng-options="n for n in [] | range:1:30"></select>

示例:http://jsfiddle.net/N3ZVp/1/

PS在您的主要文章示例中,您没有放在var的前面i。因此i在您的示例中被声明为全局变量。



 类似资料:
  • 问题内容: 如果我有一个变量,如何将数字1-50放入数组中? 问题答案: 这可以通过使用简单的for循环来解决:

  • 本文向大家介绍Elm按范围创建列表,包括了Elm按范围创建列表的使用技巧和注意事项,需要的朋友参考一下 示例 0.18.0 在0.18.0之前,您可以创建如下范围: 0.18.0 在0.18.0中,[1..5]语法已删除。 用此语法创建的范围始终是包含范围的,并且步长始终是1。

  • 问题内容: 想创建一个日期列表,从今天开始,然后返回任意天数,例如在我的示例中为100天。有没有比这更好的方法了? 问题答案: 略胜一筹…

  • 问题内容: 动态创建日期范围以便与报表配合使用的最佳方法。 因此,如果给定的一天没有活动,我可以避免报表上的空行。 通常是为了避免此问题:在sql结果中(在mysql或perl端)填充空日期的最直接方法是什么? 问题答案: 在MySQL中,没有直接的方法可以做到这一点。最好的选择是用您选择的服务器端语言生成一个daterange数组,然后从数据库中提取数据,并使用date作为键将结果数组与date

  • 问题内容: 我正在尝试在Swift 3中建立一个我已经在Swift 2中拥有的范围,但是它一直给我这个错误: 这是我的代码: expiredRange是一个 在Swift 2中,我有: 问题答案: 在Swift 3中,“集合移动其索引”,请参阅 关于Swift进化的集合和索引的新模型。 这是字符串范围和索引的示例: 的 在字符串上调用方法,以从范围(现在具有属性而不是 )中计算新索引。