我最近一直在学习 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/