gpt4 book ai didi

javascript - 将 Angular Service 对象绑定(bind)到 Controller Scope 并更新

转载 作者:行者123 更新时间:2023-12-02 15:22:36 24 4
gpt4 key购买 nike

我有一个 EmployeeService,我将其注入(inject)到 EmployeeController 中。 EmployeeService 包含一个对象。

我将服务对象绑定(bind)到 Controller 范围:

app.controller('EmployeeController', function($scope, EmployeeService) {
$scope.employee = EmployeeService.getEmployee();
}

HTML 模板显示员工姓名:

{{employee.name}}

如果我在EmployeeService中运算符(operator)工对象...即EmployeeService.getEmployee().name = 'new name',模板将显示新名称。

但是,如果我替换 EmployeeService 中的员工对象...即 EmployeeService.setEmployee({name: 'new name'}) 模板不显示新名称。

为什么替换服务对象没有反射(reflect)在模板中?

我有以下 Plunk 来演示这一点:http://plnkr.co/edit/k7oKd1VgsBvMGvVdP5kM?p=preview

在我的 Plunk 中,员工 Controller /服务可以工作,而经理 Controller /服务则不能。

如果有人能帮助我了解正在发生的事情,我将非常感激。

最佳答案

您需要 Controller 来监视管理器的更改。

$scope.$watch(function() {
return ManagerService.getManager();//<--when this changes
}, function(newManager) { //<-- run this function
$scope.manager = ManagerService.getManager();
});

这是一个更新的 Plunkr,其中包含一种方法: http://plnkr.co/edit/YE72JcxDSFqfZLH32ERy?p=preview

关于javascript - 将 Angular Service 对象绑定(bind)到 Controller Scope 并更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33923446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com