angularjs中使用ng-repeat渲染页面,点击元素,如何知道点击的哪个元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angularjs中使用ng-repeat渲染页面,点击元素,如何知道点击的哪个元素相关的知识,希望对你有一定的参考价值。

比如渲染了3个div,<div>元素一</div> <div>元素二</div> <div>元素三</div>,点击其中一个div,如何打印出对应的内容

参考技术A <div ng-click='click(element1)'>element1</div>

如果是ng-repeat

<div ng-repeat="a in b" ng-click='click(a)'></div>

在controller里

$scope.click=function(e)
console.log(e);

本回答被提问者采纳

AngularJS 使用 ng-view 在 ng-repeat 中渲染不同的模板

【中文标题】AngularJS 使用 ng-view 在 ng-repeat 中渲染不同的模板【英文标题】:AngularJS rendering different template inside ng-repeat using ng-view 【发布时间】:2014-07-09 16:49:18 【问题描述】:

很抱歉,我无法提供有关此问题的任何代码 sn-p,我是 AngularJS 的新手。

<div ng-repeat="item in list" ng-view></div>

使用上面的代码,是否可以渲染依赖于item.type 属性的不同模板。我期待这样的结果:

item.type == "image" 返回: &lt;div&gt;&lt;img src="'IMAGE_URI'"&gt;&lt;/div&gt; item.type == "text" 返回: &lt;div&gt;&lt;p&gt;TEXT&lt;/p&gt;&lt;/div&gt;

到目前为止,我已经为 item.type 的枚举创建了一个模板 html。使用 AngularJS 可以解决这个问题吗?我最近了解到ng-view 伴随着ng-route

【问题讨论】:

【参考方案1】:

我认为您可以这样做的一种方法是使用“ng-if”有条件地包含 html:

 <div ng-repeat="item in list">
      <div ng-if="item.type == 'image'><img src="'IMAGE_URI'"></div>
      <div ng-if="item.type == 'text'><div><p>TEXT</p></div>
 </div>

【讨论】:

【参考方案2】:

你只能有一个 ng-view, 看看这个answer。

来自documentation for ng-view:

ngView is a directive that complements 
the $route service by including the rendered
template of the current route into the main
layout (index.html) file.

Every time the current route changes,
the included view changes with it according 
to the configuration of the $route service.

Requires the ngRoute module to be installed.

你要找的是ng-include,结合ng-switch, 看看这个answer,了解如何将两者结合起来。

ng-include 创建一个新的子作用域,该作用域又继承自控制器。 请查看answer 以了解有关该主题的更多信息。

【讨论】:

后续问题。如果我使用ng-include,我仍然可以访问scope,以便能够使用一些数据绑定功能?

以上是关于angularjs中使用ng-repeat渲染页面,点击元素,如何知道点击的哪个元素的主要内容,如果未能解决你的问题,请参考以下文章

ng-repeat angularJS 中的 ng-repeat

由于 angularjs 中的 ng-repeat 导致的错误

聚合函数在页面刷新时复制 ng-repeat 中的项目。需要弄清楚如何停止重复。 Angularjs Mongodb mongoose

angularJS ng-repeat中的directive 动态加载template

AngularJS - 如何获取 ngRepeat 过滤结果参考

七vue中v-for有时候对页面不会重新渲染,数组变化后如何到渲染页面