Javascript 可以从$scope内访问angularjs$scope。$apply调用

Javascript 可以从$scope内访问angularjs$scope。$apply调用,javascript,angularjs,Javascript,Angularjs,是否可以从$scope.$apply调用中访问$scope变量和函数 下面是一个虚假的例子来证明我的观点。 如图所示,控制器启动时调用SomeFunctionWithAllBackParam,其参数在函数完成时用作回调 在$scope.$apply中,$scope变量和函数是否可见?如果没有,那么如何访问$scope angular .module('myController') .controller('ExampleController', ['$scope', function(

是否可以从$scope.$apply调用中访问$scope变量和函数

下面是一个虚假的例子来证明我的观点。 如图所示,控制器启动时调用
SomeFunctionWithAllBackParam
,其参数在函数完成时用作回调

$scope.$apply
中,$scope变量和函数是否可见?如果没有,那么如何访问$scope

 angular
  .module('myController')
  .controller('ExampleController', ['$scope', function($scope) {

     $scope.data = [];

     someFunctionWithaCallbackParam(function(myList) {
        $scope.$apply(function() {
           for (var i = 0; i < myList.length; i++) {
              // Is $scope visible from here??
              $scope.addItem(myList[i]);
           }
        });
     }
     $scope.addItem(item) {
        // do stuff
        $scope.data.push(item);
     }
  }]);
angular
.module('myController')
.controller('ExampleController',['$scope',function$scope){
$scope.data=[];
someFunctionWithaCallbackParam(函数(myList){
$scope.$apply(函数(){
对于(变量i=0;i
是。但是,作为最佳实践,您应该只将变量和函数分配给要在视图中使用的范围。我尝试将视图和控制器变量和函数分开

//controller variable
var blocks = [];

//scope variable
$scope.buyers = [];

//controller function
var addBlock = function(block) {
    blocks.push(block);
}

//scope function
$scope.blah = function() {
    //do stuff
}

是的,JavaScript闭包就是这样工作的。只要你定义了$scope可用的函数,你就很酷。这意味着,如果你在一些大型全局处理程序集合中定义了$scope函数,而不使用DI功能,你就不能像这样使用它。关于将vars&func分配给将用于查看的作用域的好提示。这是显而易见的既然你已经指出了,但是,我没有做。谢谢你。@whyceewhite没问题!