我有一个带有模式的表单的页面。当模态中的表单准备就绪时,我需要关闭模态并在页面上显示一条消息。我希望页面和模态是独立的控制器,因为它们有不同的职责。我发现有两种方法可以通知页面表单已准备就绪:
关于范围的Angular文档似乎说控制器不应该共享变量而是使用服务,但在这种情况下,这真的是最好的方法吗?
答案 0 :(得分:0)
使用服务共享有关控制器的信息,但不是将控制器注入服务,而是将服务注入控制器。此外,如果要保持视图与数据之间的绑定,则需要使用对象而不是原始变量。
angular.module("MyApp", [])
.factory("Data", function() {
return { msg: "Shareable/Bindable data" }
})
.controller("One", function($scope, Data){
$scope.foo = Data;
})
.controller("Two", function($scope, Data){
$scope.bar = Data;
})
在这个例子中,我可以直接返回数据,而不是将其包装在我的服务上的对象中。但是,如果我们这样做(return "..."
和$scope.foo = Data
),变量{{foo}}
或{{bar}}
只会有工厂信息的“影子”副本。因此,我们需要在视图和消息包装中使用{{foo.msg}}
。
完整示例位于Codepen.io。删除{ msg }
并返回字符串,看看我的意思。