angularjs:在控制器之间共享数据(加载HTML)

时间:2014-01-08 08:39:44

标签: angularjs

我知道这个问题已被多次询问,但我有一个与控制器之间共享数据有关的不同问题。

的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

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

你可以完成/编辑我的plunker。我不了解SharingService服务的setobject()方法在哪里被歪曲。

plunker