使用带控制器的$ scope作为语法

时间:2015-07-28 20:30:05

标签: angularjs

更新

这是我在下面看到以下示例的文章:https://github.com/johnpapa/angular-styleguide

重新阅读该示例后,我意识到正在解释一个特定且独特的场景,因此这个问题可能不完全有效。但是,我不会删除它,所以如果有人有任何进一步的知识,他们可以贡献并帮助社区。

我一直在阅读有关角度最佳实践的内容,在阅读了一些文章后我确信最好的方法是使用控制器作为语法:

angular.module('example', [])
.controller('somectr', somectr);

somectr.$inject =['$http'];

function somectr($http) {
 var vm = this;
 this.x;
}

然而,我看到一篇文章显示了这种语法,但它也注入了一个范围:

somectr.$inject = ['$scope', '$http'];

function somectr($scope, $http) {
 var vm = this;
 this.x;
 this.y;

 $scope.someFunc = function() {}
}

我认为使用控制器作为语法意味着不需要使用范围对象。什么用户案例需要控制器作为语法,但仍然使用范围对象?

1 个答案:

答案 0 :(得分:3)

即使您使用$scope,注入controllerAs的示例也是您要发布/发布活动的时间。

如果您想发布一些活动,请使用:

$scope.$broadcast('eventName', value)
$scope.$emit('eventName', value)

订阅:

$scope.$on('eventName', function)

进一步查看:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope

另一个例子是如果你使用$scope.$watch

ToddMotto有一篇关于控制器的文章:http://toddmotto.com/digging-into-angulars-controller-as-syntax/