2015-05-15 33 views
0

我有一个场景:我该如何将控制器的数据放入指令中?

1)用户点击一个链接,并发送一个请求(从控制器)到后端创建一个数据库记录。

2)响应作为控制器中的承诺返回,并能够从数据库中查看数据。

3)在#1中点击的链接打开一个指令(元素指令btw),它显示一个弹出窗口。

4)控制器和指令不相关,但我需要在弹出窗口中显示数据(由指令打开)。

我是AJS新手,我的知识很少。我应该使用服务/ rootcope?向指令发送数据承诺。

回答

1

这听起来像你的主要问题是如何获取数据到指令。我可以想到两种方法(可能更多)。

您可以使用指令的隔离区scope从控制器传入信息。绑定到此范围的选项很少(请参阅scope section of $compile)。用于双向结合的=或用于表达结合的&&。这可能看起来像

app.directive('myDirective', [ 
    function() { 
     restrict: 'E', 
     templateUrl: 'some template url', 
     scope: { 
      databaseRow: '=' 
     } 
    } 
]) 

这将在HTML

<my-directive database-row="controllerResult"></my-directive> 

您还可以创建和注入服务到您的指令,并移动DB逻辑到指令这样使用。您可以让控制器broadcast为事件或更改变量以触发该指令,或者甚至只在指令内有一些可见元素响应鼠标单击。

相关问题