Angularjs如何在回调方法中使用$范围



嗨,我是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
}

但是角不再起作用。相同的(如上所述)HTML Snippit不再起作用。但是myCallback称为!

我显然错过了一些东西吗?或:如何在回调方法中访问$scope,以便在HTML页面中的角度使用它?

您可以使用.bindthis内的CC_8的值设置为$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
}

最新更新