我正在使用angular-fullstack生成器为我的应用程序生成新的路由.语法真的很陌生,并且使用类似于类的结构.我如何使用它来注入$ scope和$ watch之类的东西?我想做的主要是观察特定变量的变化.语法如下.有谁知道如何使用它?
'use strict'; (function() { class MainController { constructor($http) { this.$http = $http; this.awesomeThings = []; $http.get('/api/things').then(response => { this.awesomeThings = response.data; }); } addThing() { if (this.newThing) { this.$http.post('/api/things', { name: this.newThing }); this.newThing = ''; } } deleteThing(thing) { this.$http.delete('/api/things/' + thing._id); } } angular.module('myapp') .controller('MainController', MainController); })();
如何注入$ watch以便我可以执行以下操作:
this.$watch('awasomeThings', function () { ... });
Sunil D... 5
他们打算(我的假设)让你使用Angular的controllerAs
语法.当你这样做时,你最终会$scope
少用(如果有的话).
原因是您的视图不再直接绑定到范围,它们绑定到控制器的属性.因此,在MyController
上面的示例中,视图可以awesomeThings
使用您提供的控制器的名称访问数组:
{{thing}}
您仍然需要使用的一种情况$scope
是您想要使用的情况$scope.$watch()
.在这种情况下,将其$scope
注入您的控制器,就像$http
上面所做的一样:
class MyController { constructor($scope) { // use the $scope.$watch here or keep a reference to it so you can // call $scope.$watch from a method this.$scope = $scope; } }
PS:这种语法很可能是ES6,但我可能错了......我使用看起来非常相似的Typescript.
他们打算(我的假设)让你使用Angular的controllerAs
语法.当你这样做时,你最终会$scope
少用(如果有的话).
原因是您的视图不再直接绑定到范围,它们绑定到控制器的属性.因此,在MyController
上面的示例中,视图可以awesomeThings
使用您提供的控制器的名称访问数组:
{{thing}}
您仍然需要使用的一种情况$scope
是您想要使用的情况$scope.$watch()
.在这种情况下,将其$scope
注入您的控制器,就像$http
上面所做的一样:
class MyController { constructor($scope) { // use the $scope.$watch here or keep a reference to it so you can // call $scope.$watch from a method this.$scope = $scope; } }
PS:这种语法很可能是ES6,但我可能错了......我使用看起来非常相似的Typescript.