扩展AngularStrap指令的正确方法是什么?

时间:2014-07-31 21:22:52

标签: angularjs angularjs-directive angular-strap

我希望扩展AngularStrap指令(在这种情况下为typeahead)以提供超过提供的功能。经过一些研究,我认为最好的方法是使用我自己的自定义指令包装typeahead指令,以便我可以扩展它。

我已经跟踪了here找到的所有3个建议来扩展Angular指令,但是它们似乎都不允许我访问typeahead控制器及其公共函数。

我是以错误的方式来做这件事的吗?扩展自定义功能指令的最佳方法是什么?非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

在我的情况下,我遵循的方法类似于描述的第二种方式there。 不同之处在于使用'require'来引用父指令的控制器。

How to require a controller in an angularjs directive

答案 1 :(得分:0)

如果你看一下AngularStraps typeahead指令( Link )的来源,你会发现它有两个部分,即提供者; '$ typeahead'和指令'bsTypeahead'。我过去发现的最简单的是这个库是复制'bsTypeahead'指令,将其重命名为其他东西,然后根据需要修改它的代码。在这种情况下,$ typeahead提供程序就像控制器一样,所有其他AngularStrap指令的工作方式都相同。

答案 2 :(得分:0)

首先,最好的方法是将Angular Strap指令包装在您自己的指令中。我用不同的Strap指令做了很多。其次,很难具体说明你需要做什么,因为你没有说明任何具体目标。但是,如果您查看Angular Strap项目的文档,您会注意到各种提示。在typahead的情况下你可以访问$ typeaheadProvider,这也是我的一些推测,但是typeahead有一个工具提示依赖,所以你可以使用$ tooltip服务在你的包装器中摆弄typahead。最后,针对typeahead的Angular Strap API非常强大,再看一下已有的内容,您可以通过使用已有的内容来完成您想要/需要的内容。你可以指定一个自定义模板,或者指定不同的前缀事件,在再看一下文档后,我自己似乎是一个与工具提示范围方法交互的界面。对不起,对于你究竟需要做什么,这可能不会更详细,但希望它会让你朝着正确的方向前进。