【问题标题】:how to change ng-bind value of ng-repeat for single element on click如何在单击时更改单个元素的 ng-repeat 的 ng-bind 值
【发布时间】:2017-03-23 18:40:20
【问题描述】:

我只是 Angular 和开发购物车的初学者,现在添加“已添加!”时遇到问题当我点击“添加到购物车”按钮时的价值。 这是我的代码

<div ng-repeat="item in products"> <a ng-click="additem(item,$index)">add to cart</a><span>{{cartadded}}</div>

js

$scope.additem = function (product,index){$scope.productsList.push(product); var item=$scope.product[index]; item.cartadded="Added!"; }

【问题讨论】:

  • 它应该是{{item.cartadded}} 而不仅仅是{{cartadded}},在additem 函数中你可以做product.cartadded="Added!" 不需要使用它的索引从数组中检索项目。
  • 在你告诉的两种情况下都不起作用..!

标签: javascript jquery angularjs angularjs-ng-repeat


【解决方案1】:

您需要单独跟踪每个项目的状态。我还稍微清理了您的代码:

<div ng-repeat="item in products">
  <a ng-click="additem($index)" ng-hide="item.cartadded">add to cart</a>
  <span ng-show="item.cartadded>Added!</span>
</div>

控制器

$scope.additem = function(index) {
  var item = $scope.products[index];
  $scope.productsList.push(item);
  item.cartadded = true;
}

【讨论】:

  • 总是出现这个错误“TypeError: Cannot read property '0' of undefined”
  • 没有看到你所有的代码,那是没有帮助的。听起来您可能使用了错误的变量名? $scope.product 是您所有产品的数组吗?
  • @AJFunk 这可能是因为在此示例中使用$scope.product[index]; 而不是$scope.products[index];
  • 好的先生,谢谢你的帮助,但你能给我这个代码补丁的工作 plunker 吗?因为加了“s”后还是不行
  • 对不起,先生,我希望它工作正常,非常感谢。以后可以联系我寻求帮助吗??请问?
【解决方案2】:

所以最后这里是上述问题的解决方案,以帮助与此问题相关的其他人

 <div ng-repeat="item in products">
    <a ng-click="additem1($index)" >add to cart</a>
    <span ng-show="item.cartadded">Added!</span>
</div>

js

  $scope.additem1 = function (index ){
    var item = $scope.products[index];
    $scope.productsList.push(item);
    item.cartadded = true;
};

上述答案有所改进,感谢AJ Funk

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    相关资源
    最近更新 更多