我需要在Angularjs中的控制器之间共享一些对象,我已经做了一些有用的东西,但它对我来说感觉有点笨拙。我想知道我所拥有的是否可以接受,或者是否有一种首选方式。
在componentA中,我有一个我想从componentB访问的对象。
app.component("componentA", {
controller: function ($scope, $rootScope, $compile) {
//the object whose contents I want
$scope.objectToAccess = {name: 'object', value: 3};
//receives broadcast from componentB, returns the object
$rootScope.$on("getObject", function () {
$rootScope.$broadcast('receiveObject', $scope.objectToAccess);
});
}
}
app.component("componentB", {
controller: function ($scope, $rootScope, $compile) {
$scope.object = {name : null, value: null};
//receives the broadcast of the object and sets the value
$rootScope.$on("receiveObject", function (event,object) {
console.log(object);
$scope.object = object;
});
//broadcast to get the object contents
$rootScope.$broadcast('getObject');
}
}
这很有效,但只是感觉太复杂,需要进行大量的来回沟通。 Angular中是否有任何专门用于处理此类事物的内容,或者我认为可以接受的内容?
答案 0 :(得分:1)
在我看来,在订阅数据更改而不是请求数据更改的情况下,应使用$ scope事件。
相反,您可以使用一种服务来保存数据并在控制器中引用它。由于服务是单例,因此控制器将共享相同的实例,因此可以轻松共享数据。