在Angular中为小部件使用指令?

时间:2013-05-30 03:53:48

标签: angularjs

是否应在AngularJS中使用指令来实现窗口小部件或控制器/服务?在谈论小部件时,我正在考虑一个UI控件,你将从控制器进行交互,例如对话框,树,网格,图表。

例如,如果我要创建一个Dialog小部件,我想在小部件上调用show()函数来显示对话框。使用指令似乎不可能。我看过一个使用过的变量,例如'showDialog',在指令监视的根范围内解决此问题。在angular-ui中,他们使用服务来实现对话框。

2 个答案:

答案 0 :(得分:2)

是的,指令可以执行此操作,您可以使用双向绑定来传递要使用的表达式,以确定HTML是否可见。

调整你的想法:而不是“你将与控制器交互的UI控件”认为MVC,引入一个“模型”。控制器可以通过设置范围上的值来更改模型,视图处理为给定模型显示的HTML。控制器不应通过直接操作DOM来与HTML交互。

在标记中你可能有:

          <modal-dialog show="showPopup">

其中showPopup是当前范围变量(或表达式)。

在你的指令中,你将创建一个孤立的范围,并使用'='作为'show'参数。

在你的指令的HTML模板中,你可以使用'show'值来显示对话框。

当然,在这种情况下,有一种更简单的方法...... ng-show已经为你做了这个,所以你可以使用你自己的模态对话框指令混合使用该指令,该指令包含你想要显示的模板。

          <modal-dialog ng-show="showPopup">

答案 1 :(得分:1)

大多数情况下,指令用作HTML视图的模板。

指令可防止代码重复,使您的HTML更清晰,更易于维护。

我知道你必须创建像“指针”这样的标签或类来将指令绑定到DOM。

根据使用模板的Dialog实现,您只能使用服务和单独的控制器。

查看this description

您无法在指令中实现Dialog。