如何将元素从ng-repeat推入另一个

时间:2016-02-23 15:17:42

标签: angularjs

问题是我不知道,我没有找到如何做标题中写的内容。如何获取单击其链接的元素,然后将其值推入数组?

Demo at Plunker

来自app.js

  $scope.orderList = [];
  $scope.add = function() {
    $scope.orderList.push($scope.pizza.name);
  };
来自view.html的

<div ng-controller="orderCtrl">
  <input type="text" ng-model="search" placeholder="{{placeholder}}" ng-focus="example()" ng-blur="default()" />
    <ul ng-hide="pizzaSvg">
      <li ng-repeat="pizza in pizze | filter:search | orderBy: 'name'" ng-model="orderList"><a href="" ng-click="add()">{{pizza.name}}</a><br/>{{pizza.ingredients}}</li>
    </ul>
    <ul ng-show="pizzaSvg">
      <li ng-repeat="order in orderList"><a href="">[x]</a> {{order}}</li>
    </ul>
</div>

2 个答案:

答案 0 :(得分:3)

您需要将披萨作为参数传递给添加功能:

  $scope.orderList = [];
  $scope.add = function(pizza) {
    $scope.orderList.push(pizza.name);
  };

然后在你的html:

<div ng-controller="orderCtrl">
  <input type="text" ng-model="search" placeholder="{{placeholder}}" ng-focus="example()" ng-blur="default()" />
    <ul ng-hide="pizzaSvg">
      <li ng-repeat="pizza in pizze | filter:search | orderBy: 'name'" ><button ng-click="add(pizza)">{{pizza.name}}</button><br/>{{pizza.ingredients}}</li>
    </ul>
    <ul ng-show="pizzaSvg">
      <li ng-repeat="order in orderList"><button>[x]</button> {{order}}</li>
    </ul>
</div>

另外,请避免将<a>用于可点击元素,因为浏览器不会尝试将链接作为其默认<button>操作,因此click之类的内容会更加干净。< / p>

答案 1 :(得分:0)

我通常会使用这样的按钮来执行此操作:

<ul ng-show="pizzaSvg">
  <li ng-repeat="order in orderList"><button ng-click="add(order)">[x]</a> {{order}}</li>
</ul>

原因是因为我视图中的链接用于从一个页面移动到另一个页面,其中一个按钮将用于执行操作。