我需要使用一个服务来跨多个视图存储、保存和提供可用的数据
I need to use a service to store, hold, and make available data across multiple views
这可能是非常基本的,但我是angular的新手,我被难住了。我有2个视图需要从表单访问相同的用户输入数据。每个视图都有自己的控制器。
我在这里:
JAVASCRIPT.config(function($routeProvider) {
$routeProvider
.when('/view1', {
templateUrl : 'view1.html',
controller: 'ctrl1'
})
.when('/view2', {
templateUrl : 'view2.html',
controller : 'ctrl2'
})
})
//SERVICE TO HOLD DATA
.service('Data', function() {
return {};
})
//CONTROLLER 1
.controller('ctrl1', ['$scope', 'Data', function($scope, Data) {
$scope.data = Data;
var $scope.initValue = function() {
$scope.data.inputA = 0; //number
$scope.data.inputB = 0; //number
}
var $scope.onSubmit = function() {
$scope.data.result = $scope.data.inputA + $scope.data.inputB;
}
}])
//CONTROLLER 2
.controller('ctrl2', ['$scope', 'Data', function($scope, Data) {
$scope.data = Data;
}
}])
HTML (view2.html) <p>Result is {{data.result}}</p>
这显示什么,我认为这是因为服务或控制器重置值时改变视图?我用服务来做这件事是不是完全错了?
你必须更新服务中的数据,以便它可以在另一个控制器中使用:
// define a var container in the service
// you can make it neat by creatin a getter and setter
.service('Data', function() {
var value = null;
var setValue = function(val) {
this.value = val;
};
var getValue = function() {
return this.value;
};
return {
value: value,
setValue: setValue,
getValue: getValue,
};
}
然后在控制器1中,你可以像这样设置服务中的值:
//CONTROLLER 1
.controller('ctrl1', ['$scope', 'Data', function($scope, Data) {
$scope.inputA = 0;
$scope.inputB = 0;
$scope.onSubmit = function() {
$scope.result = $scope.inputA + $scope.inputB;
Data.setValue($scope.result);
}
}])
在控制器2中,你可以这样使用这个值:
//CONTROLLER 2
.controller('ctrl2', ['$scope', 'Data', function($scope, Data) {
$scope.value = Data.getValue();
}])
相关文章:
- 如何在视图中保存用户输入内容,并在离开页面时对控制器进行后期调用
- 保存leaflet.js的当前视图
- 如何访问离子头栏中保存为指令的当前视图的控制器
- 主干视图保存(最佳做法)
- 保存到视图中的多个隐藏字段
- 保存当前页面视图以供共享
- 对象在Ember.js中保存时从视图中消失
- 主干 - 渲染客户端视图,然后在保存时创建它们
- 保存或删除集合中的模型时,主干视图不会更新
- 如何在保存之前用逗号格式化视图中的数字并去除它们
- 保存模型后无法重新渲染主干视图
- 如何更改DOM中的属性并保存回模型以在单独的视图中使用
- 如何将模板中的动态表传递到视图中,以迭代方式将它们保存到数据库中
- 在backbone.js中切换视图时检查未保存的更改
- 通过javascript API保存和恢复Tableau图的当前视图状态
- 将图像保存为Base64时,应用程序在Ionic视图中崩溃
- 如何在多页结果视图中保存选择状态
- 保存模型时更新主干视图
- 使用HTML5本地存储保存视图状态
- 保存视图中的表单数据