嗨,我是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页面中的角度使用它?
您可以使用.bind
将this
内的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
}