将服务变量传递给控制器​​时,这种方法是否可以接受而不是$ watch?

时间:2016-12-12 17:41:04

标签: angularjs

我正试图以正确的方式做角度,看到人们想要避免使用$ watch。我一直在使用这种方法,但没有看到有人在我的搜索中推荐它。

angular
 .module
 .service('ServiceEx', function(){
   this.exampleValue = "Hello";
   this.getHello = function(){
    return this.exampleValue
   }
 }

//in controller
$scope.exampleFromService = ServiceEx.getHello();

我知道这是一个非常基本的例子,所以在这种情况下不需要它,但是当我遇到服务变量问题发生变化并且我的范围没有用新值更新时,我开始这样做。

这被认为是不好的做法吗?

1 个答案:

答案 0 :(得分:0)

这是完全可以接受的,你应该总是使用这种方法而不是$ watch或$ rootScope。在这种情况下,服务绝对是最好的做法。只是为了完成:

angular.module("app", []).service('ServiceEx', function(){
  this.exampleValue = "Hello";

  this.setHello = function(hello){
     this.exampleValue = hello;
  }

  this.getHello = function(){
    return this.exampleValue
  }
}

//in controller
ServiceEx.setHello("Hello2");
$scope.exampleFromService = ServiceEx.getHello();