将 ng-model 分配给 ng-repeat 项目

Posted

技术标签:

【中文标题】将 ng-model 分配给 ng-repeat 项目【英文标题】:Assigning ng-model to ng-repeat item 【发布时间】:2015-06-09 03:01:18 【问题描述】:

我们有一个场景,我需要重复 <li> 项目,我们需要动态模型来编写点击事件。

 <ul class="flights trip1-list" ig-init="trip1_fare = 0">
    <li ng-repeat="data in flt_det" ng-click="addUp($event)" ng-model="***">
                            <div class="flight-icons"></div>
                            <div class="flight-details">
                                <div class="time">data.depart_time|date:'HH:mm'</div>
                                <div class="name">data.flight_name </div>
                                <div class="duration">(data.arrival_time - data.depart_time)</div>
                            </div></li>...</ul>

在这种情况下我们如何获得动态模型,我可以从 json 本身获取值,即这里的“数据”。

提前致谢。

【问题讨论】:

【参考方案1】:

你可以从重复的item中得到,data。

编辑:

把这个放到控制器里:

// private variable for storing watch functions to unbind when the
// controller is destroyed to reduce watchers & prevent memory leaks
var unbindFns = [];

function bindWatchers() 
  angular.forEach(collection, function(item) 
    var unbind = $scope.$watch(item.fooBar, function() 
      // do stuff
    );

    unbindFns.push(unbind);
  );


function unbindWatchers() 
  angular.forEach(unbindFns, function(fn) 
    fn();
  );


$scope.$on('$destroy', unbindWatchers);

【讨论】:

但我可以在子元素中使用,而不是在 元素上 &lt;li&gt; 标签的子元素?在您的示例中,您没有定义孩子。如果你这样做了,你将能够访问子元素中的 data 属性。 请找到编辑后的代码,我想在 元素上触发一个事件,并根据该事件的一些数据触发一些事件。所以我想要一些关于 的模型> 对不起,我不明白你在问什么。你是说你想监听集合中模型的事件吗?如果这些是集合上的 CRUD 事件,您可以使用 $watchCollection。如果您正在谈论在集合中的每个项目上侦听特定事件,例如 data.fooBar(),请查看我编辑的答案。

以上是关于将 ng-model 分配给 ng-repeat 项目的主要内容,如果未能解决你的问题,请参考以下文章

ng-model 是不是适用于 ng-repeated 字段?

AngularJS 获取ng-repeat的动态ng-model

如何在 ng-repeat 中动态更新 ng-model?

Angularjs - 如何“ng-repeat”一个 div 以获取“ng-model 中的值”-times?

ng-if ng-repeat下的ng-model赋值

AngularJS中获取ng-repeat动态生成的ng-model值