Javascript 新路由器向控制器注入$scope

Javascript 新路由器向控制器注入$scope,javascript,angularjs,Javascript,Angularjs,如何使用$scope访问$watch、$emit、$digest等函数 当我尝试这样做时: class HomeController { // @ngInject constructor($scope) { $scope.country = {}; $scope.countries = [ {name: 'Afghanistan', code: 'AF'}, {name: 'Åland Islands', code: 'AX'}, {n

如何使用$scope访问$watch、$emit、$digest等函数

当我尝试这样做时:

class HomeController {
  // @ngInject
  constructor($scope) {
    $scope.country = {};
    $scope.countries = [
      {name: 'Afghanistan', code: 'AF'},
      {name: 'Åland Islands', code: 'AX'},
      {name: 'Albania', code: 'AL'},
      {name: 'Algeria', code: 'DZ'},
      {name: 'American Samoa', code: 'AS'},
      {name: 'Andorra', code: 'AD'},
      {name: 'Angola', code: 'AO'},
      {name: 'Anguilla', code: 'AI'}
    ];
  }
}

export default HomeController;
我得到一个错误:
无法实例化控制器HomeController

在尝试使用$watch进行数据绑定时遇到相同问题

在撰写本文时,Angular New Router(v0.5.3)的当前版本无法使用$scope注入实例化控制器。已登录github


根据一个单独的线程,npm上有一个临时包修复了这个问题。查看说明。

更新的答案
使用新路由器,控制器在创建子作用域之前启动。
子作用域(控制器的作用域)是在调用
activate
方法时创建的,也就是说,在视图的实际编译完成之后。因此,inject$范围很简单,不可能是简单的-稍后创建即可。
长话短说。。。 有一个更好的、内置的解决方案。
不要将属性分配给不存在的
$scope
,只需在
“this”
变量-控制器实例变量上分配属性即可。然后在视图上,您可以通过引用控制器名称来使用它们:

angular.module('app.home').controller('HomeController', HomeController);

function HomeController() {
    this.name = "tomer";
}
现在是html模板:

<div>
    <h1>{{home.name}}
</div>

{{home.name}

有意义吗?

那么,您将如何使用$watch?