我有一个场景:
1)用户点击链接,并将请求(从控制器)发送到后端以创建数据库记录。
2)响应作为控制器中的promise返回,并且能够从DB中查看数据。
3)在#1中单击的链接打开一个指令(元素指令btw),它显示一个弹出窗口。
4)控制器和指令不相关,但我需要在弹出窗口中显示数据(由指令打开)。
我是AJS的新手,我的知识很少。我应该使用service / rootscope吗?将数据发送给指令。
答案 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
成为事件或更改变量以触发指令,或者甚至只是让指令中的某些可见元素响应鼠标单击。