如何将控制器中的数据放入指令中?

时间:2015-05-15 12:59:03

标签: angularjs

我有一个场景:

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

2)响应作为控制器中的promise返回,并且能够从DB中查看数据。

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

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

我是AJS的新手,我的知识很少。我应该使用service / rootscope吗?将数据发送给指令。

1 个答案:

答案 0 :(得分:1)

听起来您的主要问题是如何将数据导入指令。我可以想到两种方式(可能还有更多)。

您可以使用指令的isolate 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成为事件或更改变量以触发指令,或者甚至只是让指令中的某些可见元素响应鼠标单击。