javascript - ng-class 仅适用于 ng-repeat angularjs 中的当前范围

标签 javascript angularjs

我在使用 AngularJS 的 ng-class 部分时遇到了问题。

我唯一想到的就是在成功或错误后将类添加到 ng-click 开启的所有按钮中。

但我只想添加/更改当前单击元素的类。这在某种程度上是可能的吗?

<section ng-repeat="user in users">

    <button class="btn" ng-click="myFunction(user);" ng-class="{invalid:errors,done:success}"></button>

</section>

<script>
function UsersController($scope, $http) {
    $http.get('/users.json').success(function(users) {
        $scope.users = users;

        $scope.errors = false;
        $scope.success = false;
    });

    $scope.myFunction = function(user) {
        $http.post('/myUrl/'+user.id, student)
        .success(function(data, status, headers, config) {
            // $scope.success = true;
            user.success = true;
        })
        .error(function(data, status, headers, config) {
            // $scope.errors = true;
            user.errors = true;
        });
    }
}
</script>

我想要的只是当前范围,但这不起作用。

除了传递 ng-class 值之外,我的函数确实有效。

最佳答案

另一个解决方案:

<section ng-repeat="user in users">
    <button class="btn" ng-click="myFunction(user)" 
            ng-class="{invalid: isInvalid(user), done: isSuccess(user)}">{{user.name}}</button>
</section>

因此,您创建 isInvalidisSuccess 函数并传入当前的 user 对象:

$scope.isSuccess = function(user) {
    return user === $scope.state.success;
};

$scope.isInvalid = function(user) {
    return user === $scope.state.errors;
};

这两个函数可以判断当前用户是无效还是成功。例如,当出现错误时,您可以这样设置:

$scope.state = {
    success: false,
    errors: user
};

演示:http://plnkr.co/edit/RDJy9VsRkhAO0cFnb6AV?p=preview

关于javascript - ng-class 仅适用于 ng-repeat angularjs 中的当前范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21488149/

相关文章:

angularjs - 通过ng-submit查找触发按钮

javascript - angularjs http post 到特定元素处的 json 数组

javascript - 我可以使用 jQuery 开发 Mac OS X 仪表板小部件吗?

javascript - 使用 Promise 代替事件回调

javascript - 此上下文在我的 waypoints.js 片段中不起作用

angularjs - Angular Material Design - 根据屏幕尺寸更改弹性值

javascript - Angular JS - 如何使用 jqLit​​e 选择给定元素以外的任何内容?

javascript - 捕获外部 jquery ui 模式中的点击

javascript - 如何突出显示用于使用 Angular 进行搜索的字母表

javascript - 跳转到上一个html页面而不刷新数据