我是Angular begginer,正在研究一个允许对书籍进行评分的简单应用程序。曾经尝试将功能插入组件内的控制器时遇到此问题。该函数应该增加'喜欢'的数字,并在类'喜欢'的段落中显示它。但是,当我添加ng-click函数时,它似乎在改变之前元素的值(例如,当我点击元素1上的'喜欢',喜欢元素0中的计数器改变时)。你可以看看并提出可能的错误吗?Angular - 组件中的功能无法正常工作ng-repeat
以下是部分:
angular.
module('booksList').
component('booksList', {
templateUrl: 'books-list/books-list.template.html',
controller: function BooksListController() {
this.products = [
{
name: 'The Book of Trees',
price: 19,
pubdate: new Date('2009', '03', '08'),
cover: 'https://images-na.ssl-images-amazon.com/images/I/61EQH6%2BCpuL._SX376_BO1,204,203,200_.jpg',
likes: 0,
dislikes: 0
},
{
name: 'Program or be Programmed',
price: 8,
pubdate: new Date('2013', '08', '01'),
cover: 'https://images-na.ssl-images-amazon.com/images/I/41dKoLBVToL._SX362_BO1,204,203,200_.jpg',
likes: 0,
dislikes: 0
},
{
name: 'Sacred Games',
price: 40,
pubdate: new Date('2011', '09', '02'),
cover: 'https://images-na.ssl-images-amazon.com/images/I/51MQoLSldhL._SX327_BO1,204,203,200_.jpg',
likes: 0,
dislikes: 0
},
{
name: 'Shantaram',
price: 20,
pubdate: new Date('2010', '08', '02'),
cover: 'https://images-na.ssl-images-amazon.com/images/I/51GEFhAifOL._SX332_BO1,204,203,200_.jpg',
likes: 0,
dislikes: 0
}
];
this.orderProp = 'name';
this.plusOne = function(index) {
this.products[index].likes += 1;
console.log(this.products[index].likes);
}
}
});
这里是我在使用功能HTML模板:
<div ng-repeat="product in $ctrl.products | filter:$ctrl.query | orderBy:$ctrl.orderProp">
<div class="thumbnail">
<img ng-src="{{product.cover}}" alt="{{product.name}}">
<p class="title">{{ product.name }}</p>
<p class="price">{{ product.price | currency }}</p>
<p class="date">{{ product.pubdate | date }}</p>
<div class="rating">
<p class="likes" ng-click="$ctrl.plusOne($index)">+{{product.likes}}</p>
<p class="dislikes" ng-click="$ctrl.minusOne()">-{{product.dislikes}}</p>
</div>
</div>
</div>
你可以在一个蹲/小提琴重新创建这个,因为目前我看不到一个问题,只是看着它... –
而不是传递产品。它更容易,更容易混淆。 –
当您渲染数组时,您正在过滤并重新排序数组,这意味着'$ index'与'products'数组中的对象索引不同。 – Titus