了解范围,ng-click和角度

偷渡

在编写电话教程时,我想知道如何实现此用例

  1. 用户点击 add phone
  2. 该函数addItem被触发并被phone.id传递
  3. 检索相关电话并将数量增加1
  4. 增加的数量应显示在输入中

您可以在这里找到我的Codepen演示,这是相关的代码

<ul class="phones">
  <li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
    <b>{{phone.name}} </b>
    <i ng-click="addItem(phone.id)"> add phone</i>
    <input name='{{phone.id}}' 
           value='{{phone.qty}}' 
           ng-readonly='{{phone.orderReadonly}}' /><br />        
    <p>{{phone.snippet}} </p>
  </li>
</ul>

和JavaScript

var phonecatApp = angular.module('phonecatApp', []);

phonecatApp.controller('PhoneListCtrl', function($scope) {
  $scope.phones = [
     {'id': 1, 'name': 'Mui 1'
             ,'snippet': 'Our newcomer from asia.' 
             ,'orderReadonly' : 'false', 'qty': 4}    
     ....
    ,{'id': 4, 'name': 'Msft Lumia™'
             ,'snippet': 'Who knows what windows 10 will bring'
             ,'orderReadonly' : 'true','qty': 2}
  ];
  $scope.orderProp = 'id';
  $scope.addItem = function(phone_id) {
     // from http://stackoverflow.com/questions/15610501/
     var found = $filter('filter')($scope.phones, {id: phone_id}, true);   
     if (found.length) {
       found[0].qty = found[0].qty + 1;
     } else {
         $scope.selected = 'Not found';
     }
  }
});

当前状态

  • 通过id作品
  • 查找电话不起作用: var found = $filter('filter')($scope.phones, {id: phone_id}, true); // found in http://stackoverflow.com/questions/15610501/
  • 增加数量是行不通的

我的问题是

  • 是否以及如何以角度方式使用onclick / ng-click
  • 如何解决我的要求-增加电话数量onclick <i>add phone</i>
新开发者

我不知道为什么qty它不起作用-应该,除非您的过滤器找不到匹配项。

但是您甚至都不应该这样做。无需传递id对象的,而是找到对象以更改其属性,只需传递对象phone本身即可:

<i ng-click="addItem(phone)"> add phone</i>

然后,在控制器中,只需执行以下操作:

$scope.addItem = function(phone) {
  phone.qty = phone.qty + 1;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章