JavaScript`bind`方法无法正常工作

前端之家收集整理的这篇文章主要介绍了JavaScript`bind`方法无法正常工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下控制器没有问题.
app.controller('foo',['$scope',function ($scope) {
        $scope.delete = function(){
            bar($scope);
         }
    }]);

我试图通过使用bind使它更清洁一些:

app.controller('foo',function ($scope) {
        $scope.delete = bar.bind(null,$scope);
    }]);

不幸的是,此表单不按预期方式工作,即使在$scope已更改为引用不同的值之后,$scope始终以绑定方法(bar here)的旧版本的$scope提供.这是怎么回事?

还有什么?

如果我不应该在这里使用绑定,有什么可选择的?

解决方法

我假设你的问题是,你的绑定的Util.bar总是提供一个旧版本的$scope,即使在$scope变为引用不同的值之后.

绑定绑定值,而不是变量.您将$scope的当前值绑定到Util.bar.另一方面,您的第一个样式会在每次运行函数时强制将标识符$scope解析为值(或真正的外部范围变量记录).

如果$范围更改以引用完全不同的值,则必须使用第一个表单. .bind(null,$scope)将立即将$scope解析为一个值,并永远使用该值,而第一个无绑定的形式将在每次运行函数时将$scope解析为一个值.

猜你在找的JavaScript相关文章