Javascript 新路由器向控制器注入$scope
如何使用$scope访问$watch、$emit、$digest等函数 当我尝试这样做时: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
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?