我正在使用Angular创建一个应用程序。应用程序中有一个表单供用户输入字符串。当用户输入字符串时,使用ng-submit:
调用函数ng-model="input1" ng-submit="update()"
在更新功能中,我可以使用
访问input1的值$scope.input1
我想要做的是允许在更新函数的范围之外访问该值,以便可以通过角度应用程序中的任何其他内容调用它。
理想情况下,我希望能够更新thing1:
var app = angular.module('app1, []);
var thing1 = "value from input"
我一直在浏览文档,我想我可能需要做的是设置一个app.value,所以:
var app = angular.module('app1, []);
app.value('thing1', "value from input")
然后在submit函数中设置thing1的值,以便更新app.value,但这不起作用。
我不确定我该怎么做。有什么想法吗?
答案 0 :(得分:1)
定义服务或价值(如您所推测)。这是 angular-ish 的方式来做你想做的事。
.service( 'appService', function(){
var srvc = {};
srvc.input1 = 'foo'
return srvc
}
.value( 'input1', { data: 'foo' })
如果使用值,则需要将对象用作字符串,并且数字是不可变的。您可以考虑使用values
值来存储多个值,如果您走这条路线。
然后你将它注入你需要访问它的地方:
.controller( 'SomeController', function( $scope, appService ){
$scope.doSomething = function(){ appService.input1 = 'bar' }
})
.controller( 'AnotherController', function ($scope, $q, appService ){
$scope.myInput = appService.input1
})
答案 1 :(得分:0)
如果有人有兴趣,我按如下方式创建了一项服务:
app.service('thing', function(){
var string1 = '123'
return{
getString: function(){
return string1;
}
setString: function(value){
string1 = value;
}
然后在控制器中我添加了东西服务:
app.controller('myController', function(thing){
controller code
});
我可以使用以下命令将值放入任何范围的'thing'服务中:
thing.setString($scope.valueIwantToSet)
或者使用以下方法从任何范围获取值:
$scope.variableIwantToUse = thing.getString();
答案 2 :(得分:-2)
就我不稳定而言,你需要创建类似全局变量的东西。尝试使用$rootScope
。这是所有其他范围的父范围。您可以在任何控制器中注入和访问它,这样您就可以读/写您的值。这是一个例子。
function Controller1($scope, $rootScope) {
$rootScope.someVar = "Some value";
}
function Controller2($scope, $rootScope) {
$rootScope.someVar2 = $rootScope.someVar;
$rootScope.someVar = "Some new value";
}
您只需将$rootScope
注入某个控制器,设置该值,然后将其注入另一个控制器,然后只读取该值。
希望这有帮助!