我知道这个问题已被多次询问,但我有一个与控制器之间共享数据有关的不同问题。
的index.html
<div ng-controller="MainController"><div>LeftPanel</div> <div ng-include src="RitePanel"></div></div>
在Leftpanel中所有文档都被加载,当点击任何文档时,我更改RitePanel的值,在“RiteDiv”中带来新的html
switch (document.status) {
case 1://Draft
$scope.RitePanel= '/Scripts/app/home/templates/primary-right-panel/draft-panel.html';
break;
case 2://Completed
$scope.RitePanel= '/Scripts/app/home/templates/primary-right-panel/completed-panel.html';
break;
sharingservice.setobject(document.id);
我为每个Html创建了控制器,例如Draft-html的draftcontroller和完成的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;
});}]);
HTML:
<div ng-controller="draftcontroller "> <span>{{test}}</span></div>
问题:
首次单击文档(LeftPanel)时没有任何提示,当我再次单击它时,我看到警告以及html中的更改(RitePanel) 我觉得它是因为在第一次点击HTML没有加载但可能是因为那个子控制器不听?
在页面加载时加载的子控制器它们未动态加载。只是动态加载的HTML
任何帮助将不胜感激:)