2016-11-11 33 views
0

我有以下代码:定制兄弟指令之间的通信

<tr ng-repeat="row in ctrl.tableData"> 
    <td><status></status></td> 
    <td>{{row.id}}</td>      
    <td>{{row.firstName}}</td> 
    <td>{{row.lastName}}</td>     
    <td><number-picker></number-picker></td> 
</tr> 

其中“状态”和‘号选取器’是我custome指令。

我想根据同一行中'number-picker'的某些状态来改变'status'的可见性。因为它们在网格中,所以这两个指令都有多个实例。

我到目前为止的最佳解决方案:
1.'ng-repeat'为每个'tr'创建一个新的范围,因此我可以在'status'和'number-picker'之间共享变量 - 此方法假定我有$ scope中的行变量,这是不好的
2. $从'number-picker'广播一个事件并使用$'on'状态继续使用共享$ scope捕获它$

是否有更清晰的实现方式这种行为?
提前致谢!

---编辑---
谢谢,Vanojx1!
你的建议让我得到了我真正喜欢的解决方案。
我已经做了一些修改到你的代码,所以现在它是非常类似于我想要做的。

的一点是,现在我可以使用“numIsEven”以指示数选择器的一些内部状态的变化任何其他同级指令

PLUNKER

回答

0

添加属性等shared-info

<tr ng-repeat="row in ctrl.tableData"> 
    <td><status shared-info="row.sharedInfo"></status></td> 
    <td>{{row.id}}</td>      
    <td>{{row.firstName}}</td> 
    <td>{{row.lastName}}</td>     
    <td><number-picker shared-info="row.sharedInfo"></number-picker></td> 
</tr> 

然后定义使用指令范围'='DOC

..... 
    scope: { 
     sharedInfo: '=' 
    }, 
.... 

row.sharedInfo将指令之间共享

Plunker