2015-06-10 3 views
-1

Я пытаюсь получить значение из функции внутри функции:

контроллер

$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.

Как я могу получить это, чтобы отобразить «Привет мир»?

+2

Внутренняя функция 'myFunction()' никогда не называется? – kaveman

+1

Вам нужно также вызвать 'myFunction()', а также из 'myFunc', так как он не будет доступен снаружи. Просто так, как вы вызываете 'myFunc();' – PSL

ответ

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'; 
    })(); 
    } 
+0

Perfect - спасибо. – Ryan

Смежные вопросы