Angularjs 从服务参数执行范围函数
当我可以设置formSubmit时,我正在尝试创建一个服务 比如说。在控制器A中,我调用“service.setFormSubmit(doThis(obj)),在控制器B中,我调用“service.getFormSubmit()”。它将在控制器B中执行函数doThis(obj) 更新-重新制定问题。 我有一个视图,我想在其中编辑或创建一个类别。这意味着我需要一个动态的ng提交。我想把它放在控制器里。所以像这样:Angularjs 从服务参数执行范围函数,angularjs,angular-services,Angularjs,Angular Services,当我可以设置formSubmit时,我正在尝试创建一个服务 比如说。在控制器A中,我调用“service.setFormSubmit(doThis(obj)),在控制器B中,我调用“service.getFormSubmit()”。它将在控制器B中执行函数doThis(obj) 更新-重新制定问题。 我有一个视图,我想在其中编辑或创建一个类别。这意味着我需要一个动态的ng提交。我想把它放在控制器里。所以像这样: $scope.editCategory = function(obj) {
$scope.editCategory = function(obj) {
$scope.formSubmit = 'editCategory'
}
当然,在create上,我想把formSubmit变量改为createCategory。
因此,我可以在创建和编辑类别之间做出区别
这可能吗?如果有人有办法做到这一点,那就太好了
提前谢谢 如果不重新加载页面,可以在服务中创建一个封装的变量。set调用将分配传递给该变量的值,get调用将向调用者返回该变量 我实现传递数据的一种方法是使用服务提交表单,并将Json结果返回给服务。在返回时将Json对象存储在封装的变量中,然后将成功或失败传递给控制器。成功后,让控制器重定向视图,该视图将使用角度路由和ng视图重定向。一旦新视图以及新控制器加载到页面中,您就可以调用服务中的变量来检索下一个控制器上的数据 示例代码:
app.factory('service', function ($q, $http) {
var savedData;
return {
loadData: function() {
return data;
},
search: function (parameters) {
var searchURL = '/MVCController/Search?parameter1=' + parameters.one +
'¶meter2=' + parameters.two;
var deferred = $q.defer();
$http.get(searchURL).success(function (data) {
savedData = data;
deferred.resolve(true);
}).error(function(data) {
data = 'An error occurred while searching: ' + data;
savedData = data //(if you want to save the error)
deferred.reject(data);
});
return deferred.promise;
}
}
});
使用服务直接在控制器之间共享功能,而不是传递需要评估的字符串 服务可以非常简单:
.factory('MyService', function(){
var service = {};
return service;
});
一旦注入并分配给两个控制器中的范围变量,您就有了一个中介单元,它可以作为跨控制器协作的可修改通道
.controller('FirstController', function($scope, MyService){
$scope.service = MyService;
})
.controller('SecondController', function($scope, MyService){
$scope.service = MyService;
$scope.service.create = function(obj){
console.log('Creating');
}
$scope.service.edit = function(obj){
console.log('Editing');
}
})
从FirstController
的作用域中,现在可以调用SecondController
作用域中也可用的函数:
<div ng-controller="FirstController">
<input type="checkbox" ng-model="button.type"> Toggle create/edit<br/>
<button ng-if="button.type" ng-click="service.create(obj)">Create</button>
<button ng-if="!button.type" ng-click="service.edit(obj)">Edit</button>
</div>
切换创建/编辑
创造
编辑
我不明白,也许尝试重新措辞或添加一些代码我添加了一些代码example@guidsen这仍然没有太多的意义。服务是单例的,因此您可以存储任何需要的内容并将其取回。@lucuma您如何创建一个在两个控制器之间传递ng submit变量的服务?如果您试图在控制器之间共享功能,则逻辑可能应该在服务中,而不是控制器中。