gpt4 book ai didi

javascript - Angular 上的关注点分离,何时使用服务和/或工厂?

转载 作者:行者123 更新时间:2023-12-02 17:45:13 25 4
gpt4 key购买 nike

我最近一直在学习 Angular,并试图理解它所基于的概念。到目前为止,一切都有点神秘,但我即将实现!

无论如何,我已经使用 Angular 构建了网站的一小部分(它似乎适合用例,因为我需要在浏览器上操作 JavaScript 对象)。

作为此过程的一部分,我需要将一个对象添加到我的模型中(单击一个元素)。我花了一段时间才弄清楚如何做到这一点,但最终我成功了。

现在我得到了下面的代码:

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

stpApp.controller('multiStopController', function ($scope, $compile, $http) {
$scope.inboundJourney = [{
'DepartureAirport': '',
'DestinationAirport': '',
'DepartureDate': '',
'DepartureTime': 9,
'Class': 'Class'
}];

$scope.addInboundJourney = function () {
$scope.inboundJourney.push({
'DepartureAirport': '',
'DestinationAirport': '',
'DepartureDate': '',
'DepartureTime': 9,
'Class': ''
});
}
});

还有一些标记:

<li ng-repeat="journey in inboundJourney">
<input type="text" class="AirportName" ng-model="journey.DepartureAirport" />
</li>
<p class="addMultiStop"><span title="Add a journey" ng-click="addInboundJourney()">+</span>
</p>

多读一点,我看到了服务工厂的概念被引入。那么我的 addInboundJourney 函数应该在服务中还是工厂中,或者在 Controller 中是否可以,就像现在一样?

如果这在 Controller 中没问题,什么时候建议使用服务和/或工厂?

最佳答案

这是一个非常主观的问题。如果您需要在多个 Controller 中处理操作,请将 inboundJourney 操作移至一项服务中,并将其注入(inject)到 Controller 中。

如果您只想在 multiStopController 中操作 inboundJourneys,那么我想说您可以继续这样做。

但是,如果您发现有大量用于 inboundJourneys 操作的代码(您可能还想在 multiStopController 中执行其他一些操作,从而使您的 Controller 变得臃肿),那么我会将其移至服务中 - 无论如何我打算在许多 Controller 中使用该功能。

关于javascript - Angular 上的关注点分离,何时使用服务和/或工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21825815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com