javascript - 在 AngularJS 中使用循环和 ng-class 创建包装 DIV

标签 javascript angularjs wrapper timeline

我目前正在使用 AngularJS 创建动态时间线。我的时间线中的数据是从 JSON 文件中获取的,我已经能够成功配置该文件。这是我目前在 PLNKR 上拥有的内容:http://plnkr.co/edit/avRkVJNJMs4Ig5mDrwJ8

这是我当前的导航:

   <nav id="sticky-navigation">
      <ul>
          <li><a href="#decade-1960s">1960</a></li>
          <li><a href="#decade-1970s">1970</a></li>
          <li><a href="#decade-1980s">1980</a></li>
          <li><a href="#decade-1990s">1990</a></li>
          <li><a href="#decade-2000s">2000</a></li>
          <li class="active"><a href="#decade-2010s">2010-Now</a></li>
      </ul>
  </nav>

我基本上想为“decade-1960s”、“decade-1970s”等唯一ID创建包装器div,以便用户可以使用导航有效地导航到他们最感兴趣的十年。日期是从 JSON 文件中解析出来的,所以我想知道是否还有另一个方法可以从 JSON 中获取年份,根据特定的十年组织事件,然后为每个十年添加一个包装器。

非常感谢!我知道这听起来很复杂!但我更多的是前端开发人员和设计师,而不是后端程序员。

最佳答案

这是总体思路:

这与分页类似。从您的所有记录(事件)中获取十年,然后将它们分组为页面(每十年一页)。一旦您的转发器依赖于这个 eventsByDecade 数组,AngularJS 将完成所有繁重的工作。

以下是一些准则:

使用 json 文件填充 events 变量后,创建一个数组并根据日期填充它。为此,您需要检查每个事件的 event.theDate.getFullYear()

然后,根据年份您可以获得十年,也许使用 year.substring(0,2) (仅使用前 3 位数字)。

接下来,将它们按十年分组到一个数组中,然后将每个十年数组分配到一个主 eventsByDecade 数组中。

最后,将中继器更改为:

ng-repeat="event in events | filter:query | orderBy:orderProp:true"

使用“分页”数组:

ng-repeat="event in eventsByDecade[currentIndex] | filter:query | orderBy:orderProp:true"

这里,每当点击链接时都会设置currentIndex,例如:

<li><a href="#decade-1960s" ng-click="currentIndex = 1">1960</a></li>

更新:操作 json

JSON 计算为 JavaScript 对象。因此,您可以像这样迭代您的事件:

for(var event in events){
 event.theDate; //this object should have properties such as the date
}

关于javascript - 在 AngularJS 中使用循环和 ng-class 创建包装 DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14363888/

相关文章:

Twig 中的 AngularJS 组件

angularjs - 错误 : [$injector:nomod] Module 'ui.bootstrap' is not available! 您拼写错误 [...]

java - 包装对静态方法/变量的访问的模式名称是什么?

Python __getattribute__ 和方法的包装

javascript - 尽管从 res.data 分配值,状态值仍为空

javascript - 警告 : Failed propType: Required prop `children` was not specified in `Pane` . 检查 `first-time-tab` 的渲染方法

javascript - 从日期时间日历更改月份名称(输出)

c++ - 包装类的内存开销

javascript - 如何从文档中插入 HTML ASCII 艺术?

javascript - 如何以 Angular 加载基本 html View 中的 View ?