AngularJs如何在回调方法中使用$ scope

时间:2017-12-01 23:11:22

标签: javascript angularjs angularjs-scope

您好我是AngularJs的新用户并且对controller

有些问题

对我来说这很有用:

var m= angular.module('m', []);

m.controller('myC', function myC($scope) {
    $scope.myVal  = [{/*..*/}]; //assigning values directly
});

用于例如像这样

<div data-ng-app="m">
    <div ng-controller="myC">
        {{myVal}}
    </div>
<div>

但我有一个更复杂的方法来获取我想在myVal中使用的数据。因此,我尝试传输$scope以在回调方法中使用它(在那里执行Web请求,这需要一些时间,但值会返回!)。我的方法如下:

var m= angular.module('m', []);

var s;
m.controller('myC', function myC($scope) {
    s = $scope;
    bigFunction("foo1", "foo2", myCallback);
});

function myCallback(a, b) {
    s.myVal = b; //trying to assign the value to $scope
}

但Angular不再工作了。同样(如上所列)html snippit不再起作用了。但是myCallback被称为!

我明显错过了什么吗?或者:如何在回调方法中访问$scope以便在HTML页面中的Angular中使用它?

1 个答案:

答案 0 :(得分:0)

您可以使用.bindthismyCallback的值设置为$scope

m.controller('myC', function myC($scope) {
    bigFunction("foo1", "foo2", myCallback.bind($scope));
});

function myCallback(a, b) {
    this.myVal = b; //trying to assign the value to $scope
}

或者,您可以使用.bind设置第一个参数:

m.controller('myC', function myC($scope) {
    bigFunction("foo1", "foo2", myCallback.bind(null, $scope));
});

function myCallback($scope, a, b) {
    $scope.myVal = b; //trying to assign the value to $scope
}