2016-02-12 56 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 =“..”是毫无意义的 –

相关问题