角度.js $scope.$on初始值

Angular.js $scope.$on initial value

本文关键字:scope js 角度 on      更新时间:2023-09-26

我正在使用angular.js $scope.$on来侦听来自我的服务的事件(事件在服务数据更改时被触发)。

我使用以下代码片段:

$scope.people = contacts.people;
$scope.$on('contacts-changed', () => {
    $scope.people = contacts.people;
});

有没有办法扩展角度以避免第一行并在事件绑定时默认触发 $scope.$on("触点更改")或类似内容?我正在寻找棱角分明.js装饰器,但不确定如何装饰$scope以添加$scope.$bind或类似方法

想法?

有时解决方案非常简单,但您需要跳出框框思考。将事件回调块移动到函数中,并在控制器加载时在事件绑定之后运行它。

看到这个:

function handlePeople() {
    $scope.people = contacts.people;
}
$scope.$on('contacts-changed', handlePeople);
handlePeople();

您还可以保留原始代码并手动执行触发器。

暂时采用以下解决方案:

$rootScope.$bind = (bindName, bindHandler) => {
    $rootScope.$on(bindName, bindHandler);
    bindHandler();
};

但是我想替换它,这样我就可以使用 $scope 而不是 $rootScope,并且不必在每个$scope中定义它......我可以尝试使用 $scope._ proto _,但似乎 _ proto _ 已被弃