您好我是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中使用它?
答案 0 :(得分:0)
您可以使用.bind
将this
内myCallback
的值设置为$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
}