2016-02-12 58 views
2

我有以下的div設置另一個控制器範圍的變量,而無需使用angular.element(Angularjs)

<div ng-controller="MyController as MC" id="div1">                             
    <a href="#" id="1" ng-init="MC.EntityId = 1 , MC.EntityType = 57" ng-click="MC.LoadFiles(MC.EntityId, MC.EntityType)" title="Upload">Upload </a>                           
</div> 

我想在這裏顯示ENTITYID和的EntityType我在DIV1

<div ng-controller="MyController as MC" id="div2">                             
    EntityId = {{MC.EntityId}}, EntityType = {{MC.EntityType}}                          
</div> 

如何已經設置我爲LoadFiles函數中的div2設置EntityId和EntityType,而不使用angular.element。

app.controller('MyController', function() { 
    this.EntityId = 0; 
    this.EntityType = 0; 

    this.LoadFiles = function (id, type){ 
     this.EntityId = id; 
     this.EntityType = type; 
    } 
}); 
+0

相關,可能重複[這是什麼在AngularJS控制器之間溝通的正確方法(http://stackoverflow.com/questions/11252780/whats-the-correct-way-to-communicate -between-controllers-in-angularjs) –

+0

爲什麼你說另一個控制器範圍?只有一個控制器 –

回答

3

你應該創建一個服務,然後將其注入到這兩個控制器,然後在服務

1

你需要爲了做two-way data binding使用對象保存和檢索您的Entities。 雙向數據綁定不適用於primitive type

做以下更改。

app.controller('MyController', function() { 

    this.Entity = {EntityId:0,EntityType:0}; 

    this.LoadFiles = function (objEntity){ 
     this.Entity.EntityId = objEntity.EntityId; 
     this.Entity.EntityType = objEntity.EntityType; 
    } 
}); 

HTML:

<div ng-controller="MyController as MC" id="div1"> 
    <a href="#" id="1" ng-init="MC.Entity.EntityId = 1 , MC.Entity.EntityType = 57" ng-click="MC.LoadFiles(MC.Entity)" title="Upload">Upload </a>  
</div> 

HTML Div2的

<div ng-controller="MyController as MC" id="div2">                             
    EntityId = {{MC.Entity.EntityId}}, EntityType = {{MC.Entity. ntityType}}                          
</div> 

編輯:

<div ng-controller="MyController as MC" id="div1"> 
    <a href="#" id="1" ng-click="MC.LoadFiles(MC.Entity)" title="Upload">Upload </a>  
</div> 

<div ng-controller="MyController as MC" id="div2">                             
    EntityId = {{MC.Entity.EntityId}}, EntityType = {{MC.Entity. EntityType}}                          
</div> 

控制器:

controller('MyController', function() { 

    this.Entity = {EntityId:1,EntityType:57}; 

    this.LoadFiles = function (objEntity){ 
     this.Entity.EntityId = objEntity.EntityId; 
     this.Entity.EntityType = objEntity.EntityType; 
    } 
}) 

Plunker檢查

+0

'您需要使用一個對象才能進行雙向數據綁定。雙向數據綁定未與原工作type.'如果你使用'$ scope.EntityId'(我從來不使用這個),它的工作 – AlainIb

+1

它不工作,因爲MC.Entity範圍僅限於DIV1。 –

+0

兩個控制器都是一樣的。它是類型錯誤還是真的一樣?如果是,那麼div1中的ng-init =「..」是毫無意義的 –

相關問題