控制器中未直接分配给示波器的逻辑应该在到达控制器之前的其他地方完成

时间:2017-03-15 06:30:50

标签: angularjs angularjs-service angularjs-controller

 $scope.listValueChanged = function (name) {
 listId = [];
 $scope.listType= name;
 };

 if ($scope.contacts &&   $scope.contacts.length > 0) {
       var gsSelectedContacts =$scope.contacts;
      for (var i = 0; i < $scope.contacts.length; i++) {
         contactIds.push(gsSelectedContacts[i].id);
       }
 }

对于上面的代码,我收到了来自我的上级的评论评论,如下所示控制器中未直接分配给范围的逻辑应该在到达控制器之前在其他地方完成,然后应用于{{1 }} 即可。 我只在一个地方使用这种方法。是的,我真的需要将这种逻辑转移到服务上吗?

2 个答案:

答案 0 :(得分:1)

这取决于这里的用例。如果您要重用某些东西,最好为此创建一个service,但如果您不打算重用或者代码不足以用作服务,那么您应该避免使用服务。 Service旨在使您的代码更有条理,并提供更好的可用性,因此它取决于您真正需要的是什么。

details on where to use service can be found here

答案 1 :(得分:0)

尝试执行以下更改并将注释逻辑移至服务

为listType

创建服务中的getter和setter

Js代码

  $scope.listType = '';
  $scope.listValueChanged = function(name) {
    listId = [];
    $scope.listType = name;
  };

  if ($scope.contacts && $scope.contacts.length > 0) {
    var contactIds = [];
    var gsSelectedContacts = $scope.contacts;
    //
    // this logic you can keep in service
    //
    $scope.contacts.map(function(contact) {
      contactIds.push(contact);
    });
  }

希望这会对你有所帮助