JavaScript`bind`方法无法按预期工作

PHP*_*Pst 9 javascript bind angularjs

以下控制器工作没有问题.

 app.controller('foo', ['$scope',function ($scope) {
        $scope.delete = function(){
            bar($scope);
         }
    }]);
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法使其更清洁bind:

 app.controller('foo', ['$scope',function ($scope) {
        $scope.delete = bar.bind(null, $scope);
    }]);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个表单不能按预期工作,并且$scope总是在绑定方法(bar此处)中提供旧版本的$ scope ,即使在$ scope更改为引用不同的值之后也是如此.这有什么问题?

还有什么?

如果我不在bind这里使用,还有什么选择?

aps*_*ers 10

我假设您的问题是您的绑定Util.bar始终提供旧版本$scope,即使$scope已更改为引用不同的值.

bind绑定,而不是变量.您绑定的电流值$scopeUtil.bar.另一方面,$scope每次函数运行时,您的第一个样式会强制将标识符解析为值(或实际上是外部作用域变量记录).

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