angularjs:在控制器之间共享数据(加载HTML)
我知道这个问题已经被问过很多次了,但我有一个与控制器之间共享数据有关的不同问题 index.html sharingservice.setobjectdocument.id 我已经为每个Html创建了控制器,例如用于草稿Html的draftcontroller和用于已完成Html的completedcontroller这些都是子控制器 我创建了一个共享服务,用于在顶级控制器和子控制器之间共享数据angularjs:在控制器之间共享数据(加载HTML),angularjs,Angularjs,我知道这个问题已经被问过很多次了,但我有一个与控制器之间共享数据有关的不同问题 index.html sharingservice.setobjectdocument.id 我已经为每个Html创建了控制器,例如用于草稿Html的draftcontroller和用于已完成Html的completedcontroller这些都是子控制器 我创建了一个共享服务,用于在顶级控制器和子控制器之间共享数据 adocsModule.factory('SharingService', function (
adocsModule.factory('SharingService', function ($rootScope) {
var service = {
setobject: function (object) {
$rootScope.$broadcast('docobject', object);
}
};
return service;});
在儿童控制器中,我是这样做的
adocsModule.controller('draftcontroller ', ['$scope', 'SharingService', function ($scope, sharingservice) {
$scope.$on('docobject', function (event, clientDataObject) {
alert(clientDataObject); //i know its not recommended its just for testing purpose
console.log('pendingcontroller ' + clientDataObject);
$scope.test = clientDataObject;
});}]);
HTML:
问题:
在第一次单击documentLeftPanel时,不会出现任何提示,当我再次单击它时,我会在html面板中看到警报和更改
我觉得这是因为第一次点击时HTML还没有加载,可能是因为子控制器没有监听
在页面加载时加载的子控制器不会动态加载。只是动态加载的HTML
任何帮助都将不胜感激:您能完成/编辑我的物品吗。我不理解SharingService的setobject方法是在哪里触发的
对不起,我弄错了,它发生在主控制器上。我在我的问题中编辑了它,我用$timeout解决了它,我想它是在加载HTML之前发生的
adocsModule.factory('SharingService', function ($rootScope) {
var service = {
setobject: function (object) {
$rootScope.$broadcast('docobject', object);
}
};
return service;});
adocsModule.controller('draftcontroller ', ['$scope', 'SharingService', function ($scope, sharingservice) {
$scope.$on('docobject', function (event, clientDataObject) {
alert(clientDataObject); //i know its not recommended its just for testing purpose
console.log('pendingcontroller ' + clientDataObject);
$scope.test = clientDataObject;
});}]);
<div ng-controller="draftcontroller "> <span>{{test}}</span></div>