AngularJS将值设置为嵌套函数的$ scope

时间:2015-06-10 17:59:52

标签: javascript angularjs scope angularjs-scope closures

我正在尝试从函数内的函数中获取值:

控制器

  $scope.vm = {};

  function myFunc(){
    $scope.vm.hello = 'Hello';
    function myFunction(){
      $scope.vm.world = 'world';
    }
  }

  myFunc();

查看

<p>{{vm.hello}} {{vm.world}}</p>

Here's my Plunk

如何才能显示“Hello world”?

1 个答案:

答案 0 :(得分:1)

我认为你正试图实现一种叫做“封闭”的东西。如果是这样,请将控制器修改为:

app.controller('MainCtrl', function($scope) {

  $scope.vm = {};

  function myFunc(){
    $scope.vm.hello = 'Hello';
    return function () {
      $scope.vm.world = 'world';
    }
  }

  var hello = myFunc(), // invokes outer function
      world = hello();  // invokes inner function

  console.log($scope.vm);      
});

在您的代码中,无法在myFunction()方法之外调用内部函数myFunc(),因为其范围受此外部方法的限制。你当然可以直接在外部方法中调用它,或者更好 - 立即使内部函数:

  function myFunc(){
    $scope.vm.hello = 'Hello';
    (function myFunction(){
      $scope.vm.world = 'world';
    })();
  }