AngularJS - 从ng-repeat循环外部更新模型

时间:2015-07-26 14:45:48

标签: angularjs

我对Angular相当陌生,如果我对术语的使用有点偏僻,那么道歉。

这是观看代码:

amount

请注意,表单位于ng-repeat循环之外。这是一支笔:http://codepen.io/nomis101uk/pen/WvaKyY

基本上我希望能够点击一部电影,然后用选择更改其评级。问题是,当形式生活在ng-repeat循环之外时,select元素上的绑定必须动态地改变以匹配我点击的任何胶片。我不能简单地说ng-model =" movie.rating",因为Angular不知道我所指的是哪部电影。

这可以通过将表单放在循环中来解决,但这会导致我的视​​图填充了大量的表单。绝对不是一个好的解决方案。

2 个答案:

答案 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
});