2016-11-07 2 views
0

я пытаюсь получить доступ к переменной "к" из из стороны функции $ СФЕРА

.controller('AboutCtrl', ['$scope','$http', function($scope,$http) { 
    var k =""; 
    $scope.search = function() { 
    // $scope.searchText will give the search terms 
    k = $scope.searchText; 
    console.log(k); //has something 
    }; 
    console.log(k); // this is empty 
+0

Это выглядит довольно хорошо .. Во-первых, когда вы начинаете контроллер K будет пустой .. то после вызова метода k будет иметь значение –

+0

'k = $ scope.searchText' этот оператор привязан к области блока выражения функции' $ scope.search', поэтому он не будет работать при начальной загрузке. – dreamweiver

+0

И как вы думаете, он должен работать? –

ответ

0

Используйте $ rootScope для этого, rootScope - это переменная globle в угловом выражении, вам нужно просто ввести зависимость, как вы можете видеть в нижнем коде, и использовать ее вне controll er также ..

.controller('AboutCtrl', ['$scope','$http','$rootScope' function($scope,$http,$rootScope) { 
    // var k =""; use below method. 
    $rootScope.k = ""; 
     $scope.search = function() { 
     // $scope.searchText will give the search terms 
     $rootScope.k = $scope.searchText; 
     console.log($rootScope.k); //has something 
     }; 
     console.log($rootScope.k); // this is empty 
+0

Я получил его, чтобы работать, используя это спасибо! Я использовал (.run), и он работает – kuhle

1

Это будет пустым, пока вы действительно не называйте search функцию,

app.controller("AboutCtrl", function($scope, $http) { 
    var k = ""; 
    $scope.search = function() { 
    // $scope.searchText will give the search terms 
    k = $scope.searchText; 
    console.log(k); //has something 
    }; 
    //this will print the value 
    $scope.print = function() { 
    alert(k); 
    } 

}); 

DEMO

0

Вы можете использовать услуги углового. В основном вам нужно создать службу, как показано ниже

app.service('svc', function() { 
    this.k = ""; 
    this.setK = function(value) { 
    this.k = value; 
    } 
    this.getK = function() { 
    return this.k; 
    } 
}); 

Затем убедитесь, чтобы ввести услугу в контроллер

.controller('AboutCtrl', ['$scope','$http', function($scope,$http,svc) { 
    var k =""; 
    $scope.search = function() { 
    // $scope.searchText will give the search terms 
    k = $scope.searchText; 
    console.log(k); //has something 
    svc.setK(k); //saving k to the service 
    }; 
    console.log(k); // this is empty 
    k = getK(); //getting k from the service