Angularjs 控制器中非';直接分配给作用域的t应在其到达控制器之前的其他位置完成 $scope.listValueChanged=函数(名称){ listId=[]; $scope.listType=名称; }; 如果($scope.contacts&&$scope.contacts.length>0){ var gsSelectedContacts=$scope.contacts; 对于(变量i=0;i

Angularjs 控制器中非';直接分配给作用域的t应在其到达控制器之前的其他位置完成 $scope.listValueChanged=函数(名称){ listId=[]; $scope.listType=名称; }; 如果($scope.contacts&&$scope.contacts.length>0){ var gsSelectedContacts=$scope.contacts; 对于(变量i=0;i,angularjs,angularjs-service,angularjs-controller,Angularjs,Angularjs Service,Angularjs Controller,对于上面的代码,我得到了上级的审核意见,如下面的控制器中未直接分配给作用域的逻辑应在到达控制器之前在其他地方执行,然后应用于$scope。 我只在一个地方使用这种方法。是的,我真的需要将这个逻辑转移到服务吗?这取决于这里的用例。如果您打算重用某些东西,最好为此创建一个服务,但如果您不打算重用或代码不足以用作服务,则应避免使用服务服务旨在使您的代码更有条理,并提供更好的可用性,因此这取决于您的实际需求 尝试进行以下更改,并将已注释的逻辑移到服务中 在服务中为listType创建getter和set

对于上面的代码,我得到了上级的审核意见,如下面的控制器中未直接分配给作用域的逻辑应在到达控制器之前在其他地方执行,然后应用于
$scope

我只在一个地方使用这种方法。是的,我真的需要将这个逻辑转移到服务吗?

这取决于这里的用例。如果您打算重用某些东西,最好为此创建一个
服务
,但如果您不打算重用或代码不足以用作服务,则应避免使用服务<代码>服务旨在使您的代码更有条理,并提供更好的可用性,因此这取决于您的实际需求


尝试进行以下更改,并将已注释的逻辑移到服务中

在服务中为listType创建getter和setter

Js代码

 $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);
       }
 }

希望这对您有所帮助

您的代码看起来像什么还不清楚。你最好听从上司的建议。Link分享@BOSS非常useful@MurthyM查看这些将有助于你做出更好的设计决策
  $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);
    });
  }