2016-07-04 3 views
2

Я пытаюсь сохранить какую-то глобальную переменную в своем приложении. Я читал, что лучше использовать значение вместо службы или корнеплода.
Итак, я создал этот фрагмент кода, чтобы проверить поведение значения. Похоже, что значение изменяется в сторону контроллера, но если я использую значение в другом контроллере, изменение, похоже, будет потеряно. Есть ли способ изменить значение во время выполнения и почему изменение не является постоянным?Изменение значения не является постоянным между контроллерами

Here мой код на jsfiddle

Javascript

var myApp = angular.module('myApp',[]); 

myApp.value("basePath", ""); 

myApp.controller('TestController', function($scope, basePath) { 

    $scope.preEdit = basePath; 

    basePath = window.location.href; 
    $scope.postEdit = basePath; 

}); 

myApp.controller('SampleController', function($scope, basePath) { 
    $scope.transferedValue = basePath; 
}) 

HTML:

<div ng-controller="TestController"> 
Before Editing: {{preEdit}}<br> 
After Editing: {{postEdit}}<br> 
</div> 

<div ng-controller="SampleController"> 
    In another Controller: {{transferedValue}} 
</div> 

ответ

4

Вы найдете ответ в этой записи: Global variables in AngularJS

Определить значение как объект

myApp.value("basePath", {value: ""}); 

После этого вы можете изменить basePath.value в контроллерах.

myApp.controller('TestController', function($scope, basePath) { 

    $scope.preEdit = basePath.value; 

    basePath.value = window.location.href; 
    $scope.postEdit = basePath.value; 

}); 
+0

Можно ли использовать это значение в службе вместо контроллера? – JohnDizzle

+0

Да, вы можете использовать и изменять значение также в сервисах. –

-1

хаи JohnDizzle,

You Can Pass the Data from One Controller to Anthor Controller Using BroadCast . And You can Store The LocalStorage And Retrive In Anthor Controll ALSO .. If Have Any Doughts Ask me. 
+1

Это должно быть комментарий, так как у вас нет достаточной репутации комментировать, вы должны опубликовать реальный ответ. – developer033

1

использовать константу,

myApp.constant('basePath', ''); 

это позволит вводить значение в модули.

0

Вот отрывок рабочий:

var app = angular.module('app', []); 
 

 
app.controller('TestController', function($scope, $rootScope) { 
 
    $rootScope.postEdit = window.location.href; 
 
}); 
 

 
app.controller('SampleController', function($scope, $rootScope) { 
 
    $scope.transferedValue = $rootScope.postEdit; 
 
});
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script> 
 
</head> 
 
<body> 
 
    <div ng-controller="TestController" ng-bind="postEdit"></div> 
 
    <div ng-controller="SampleController" ng-bind="transferedValue"></div> 
 
    </div> 
 
</body> 
 
</html>

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