将控制器的引用传递给服务并直接从服务中修改视图中的数据是一种好的做法吗?

时间:2014-12-13 12:20:48

标签: angularjs

让我用一个例子解释一下。

控制器

app.controller('myController', function(){

  var refCtrl = this;

  refCtrl.employeeName = 'Bill';
  refCtrl.employeeAge  = 25;

  myService.changeNameAndAge(refCtrl);

});

现在,employeeName和employeeAge变量被绑定到视图(HTML)。

服务

app.factory('myService',function(){

   return {

      changeAgeAndName : function(ref) {

          if(some_business_logic_condition_check) {
             ref.name = 'Harry';
             ref.age = 30;
          }
      }
  };
});

现在,我们可以使用此服务在视图中更改名称和年龄的值。

它正在成功发生。但这是一个好习惯吗?它不会打破MVC模式吗?

1 个答案:

答案 0 :(得分:0)

在MVC层之间保持松散耦合总是一个好主意。在给定的代码中,如果更改了控制器,那么服务也将需要更改,从而使每个更改都变得非常复杂。