我想分享以下两个指令之间的$范围:
One23SRCApp.directive('directive1',function() { return { restrict: "A",scope:true,link: function (scope,element,attrs) { scope.tablename = "table"; } }; }); One23SRCApp.directive('directive2',attrs) { var tablename = scope.tablename; } }; })
在HTML中,我有:
<input type="text" directive2 placeholder="Search Models..."> <table directive1> <tr> <td>column1</td> <td>column1</td> </tr> </table>
我创建了带有隔离范围的名为“directive1”的指令,将名称“table”分配给scope.tablename属性.我无法在其他指令中访问此scope属性.
那么如何在另一个指令中访问一个指令的范围?
您可以对需要在指令中同步的项目执行$rootScope.$broadcast.
或者您可以将对象传递给您的指令1隔离的作用域,作为通信机制.在此对象上,如果您更改子属性(如tablename),则会影响父范围.
就像是
One23SRCApp.directive('directive1',scope:{tableconfig:'='},attrs) { scope.tableconfig.tablename= "table"; } }; }); One23SRCApp.directive('directive2',attrs) { var tablename = scope.tableconfig.tablename; } }; })
HTML成为
<table directive1 tableconfig='tableconfig'> <tr> <td>column1</td> <td>column1</td> </tr> </table>
您的控制器应该定义此对象
$scope.tableconfig = {};