我对Angular相当陌生,如果我对术语的使用有点偏僻,那么道歉。
这是观看代码:
amount
请注意,表单位于ng-repeat循环之外。这是一支笔:http://codepen.io/nomis101uk/pen/WvaKyY
基本上我希望能够点击一部电影,然后用选择更改其评级。问题是,当形式生活在ng-repeat循环之外时,select元素上的绑定必须动态地改变以匹配我点击的任何胶片。我不能简单地说ng-model =" movie.rating",因为Angular不知道我所指的是哪部电影。
这可以通过将表单放在循环中来解决,但这会导致我的视图填充了大量的表单。绝对不是一个好的解决方案。
答案 0 :(得分:1)
而不是我想象的是:
$scope.select = function(title, rating) {...};
为什么不
$scope.select = function(movie) {
... do something with movie.title and movie.rating ...
$scope.selectedMovie = movie;
};
然后
变化
<tr ng-repeat="movie in movies | filter:name | orderBy:field:reverse" ng-click="select(movie.name,movie.rating)">
<td>{{movie.name}}</td>
<td>{{movie.rating}}</td>
</tr>
到
<tr ng-repeat="movie in movies | filter:name | orderBy:field:reverse" ng-click="select(movie)">
<td>{{movie.name}}</td>
<td>{{movie.rating}}</td>
</tr>
并在您的选择中使用selectedMovie.rating
答案 1 :(得分:0)
你可以做这样的事......
<强> HTML 强> 从
更改此行<tr ng-repeat="movie in movies | filter:name | orderBy:field:reverse" ng-click="select(movie.name,movie.rating)">
到
<tr ng-repeat="movie in movies | filter:name | orderBy:field:reverse" ng-click="select($index)">
<强> JS 强>
$scope.select = function(selectedIndex) {
SelectedItemService.selectedItem = selectedIndex;
movies[selectedIndex]['rating'] += 1
}
$scope.submit = function() {
var selectedIndex = SelectedItemService.selectedItem;
}
angular.service('SelectedItemService', function() {
this.selectedItem
});