Angular 方法影响范围元素时的服务设计
Angular service design when methods affect scope elements
我有这个jsfiddle,基本上是两个按钮的应用程序。当您单击第一个时,它会在我的 angular 控制器 (load()
) 中执行一个方法,我试图创建服务以重用逻辑、组织更多代码并实际尝试遵循最佳实践.
首先请让我知道我是否正在关注。
控制器是将更改传达给模型的部分,是我的视图或演示与应用程序背后的逻辑之间的交互。
服务更多用于在应用程序中创建进程 运行,从 REST 的角度来看,这将负责调用 REST api,如果计算适用这是他们应该居住的地方
我的问题是,当 http 调用的回调函数移动范围内的元素并用于在 UI 中执行操作时,我会怎么做?
将 $scope 移动到我的服务层是正确的吗?我认为不正确有几个原因。
举一个真实的例子,将 fiddle 中的 load()
方法逻辑移动到 loadFromService
方法的最佳方法是什么,我如何发送回我需要更新 UI 的信息,在本例中为 [source] 和 [invalid] vars.
基于 fiddle 我想用 "service" 值和 invalid = true 更新 source 变量,当我使用 myService.loadFromService();
调用它时
这样做的正确方法是什么。澄清一下,如果我单击执行控制器方法的第一个按钮或单击调用服务的第二个按钮,我想要相同的结果,正确的实现是什么
更新: 如果我在 REST 调用前后有一系列条件或规则,最好的方法是什么,我的意思是服务方法不仅执行 REST 调用(做一些逻辑来设置输入参数,并对响应做一些事情)
正确的方法是返回一个承诺。
您可以在此 post 阅读更多相关信息:
所以我会像这样实现它:
myApp.service('myService', [ '$http', function($http) {
this.loadFromService = function() {
$http.get('http://localhost:8080/person').then( function(res) {
return res.data;
});
};
}]);
在控制器中你可以有:
myApp.controller('myController', ['myService', function(myService) {
$scope.load = function() {
myService.loadFromService().then(function(data) {
$scope.data2 = data;
});
};
}]);
我有这个jsfiddle,基本上是两个按钮的应用程序。当您单击第一个时,它会在我的 angular 控制器 (load()
) 中执行一个方法,我试图创建服务以重用逻辑、组织更多代码并实际尝试遵循最佳实践.
首先请让我知道我是否正在关注。
控制器是将更改传达给模型的部分,是我的视图或演示与应用程序背后的逻辑之间的交互。
服务更多用于在应用程序中创建进程 运行,从 REST 的角度来看,这将负责调用 REST api,如果计算适用这是他们应该居住的地方
我的问题是,当 http 调用的回调函数移动范围内的元素并用于在 UI 中执行操作时,我会怎么做?
将 $scope 移动到我的服务层是正确的吗?我认为不正确有几个原因。
举一个真实的例子,将 fiddle 中的 load()
方法逻辑移动到 loadFromService
方法的最佳方法是什么,我如何发送回我需要更新 UI 的信息,在本例中为 [source] 和 [invalid] vars.
基于 fiddle 我想用 "service" 值和 invalid = true 更新 source 变量,当我使用 myService.loadFromService();
这样做的正确方法是什么。澄清一下,如果我单击执行控制器方法的第一个按钮或单击调用服务的第二个按钮,我想要相同的结果,正确的实现是什么
更新: 如果我在 REST 调用前后有一系列条件或规则,最好的方法是什么,我的意思是服务方法不仅执行 REST 调用(做一些逻辑来设置输入参数,并对响应做一些事情)
正确的方法是返回一个承诺。
您可以在此 post 阅读更多相关信息:
所以我会像这样实现它:
myApp.service('myService', [ '$http', function($http) {
this.loadFromService = function() {
$http.get('http://localhost:8080/person').then( function(res) {
return res.data;
});
};
}]);
在控制器中你可以有:
myApp.controller('myController', ['myService', function(myService) {
$scope.load = function() {
myService.loadFromService().then(function(data) {
$scope.data2 = data;
});
};
}]);