3

我是Angular菜鸟,所以请原谅这篇文章的无知。

细节:

我正在使用CodeIgniterwithAngular.js并且在我的应用程序中初始化许多插件的概念时遇到了挫折。我有大约 5 个我想使用的插件(下拉菜单、滑块等)。

问题:

我在网上看过一些关于如何初始化插件的例子,如下所示:

embroidery.directive( 'f-foundation', function() {
    return {
            restrict: 'A', 
        link: function( scope, element, attrs ) {
            // each element is needing a explicit init
            element.foundation( 'dropdown', 'start' );
        }   
    }
});

该指令将应用于下拉元素,如下所示:

<select f-foundation>
    <option>test infomation</option>
</select>

这需要在不同的指令中初始化每个插件;一定有更好的方法。

但是,我想知道是否有一种方法可以让我的所有插件同时初始化。如果我不使用 Angular,我将拥有一个简单的plugin_init()函数

$( element ).chosen();
$( element_2 ).toolbar();
$( document ).foundation(); //etc

我错过了 Angular 的概念吗?有什么帮助吗?

4

1 回答 1

0

我不认为你错过了一个概念。实际上这个概念是关注点分离。

现在它可能看起来有点矫枉过正,只是为了初始化插件,但从长远来看,它为您提供了扩展指令的灵活性。这似乎有点矫枉过正,因为您没有将任何选项传递给插件初始化,但随着应用程序的增长,每个实例都有不同的配置。

也许它会帮助您将您的指令视为您的标记和您正在使用的特定插件之间的适配器。如果您不得不更改插件(即chosen=> select2),您只需要重写指令内容。

编辑:经过一番思考,我不知道您正在构建的应用程序的大小和范围。也许而且矫枉过正。在这种情况下,不要使用 angular 初始化它们,只需按照您的建议进行操作即可。如果它是带有联系表格的单页营销网站,我只能建议您不要使用指令来执行此操作,除非您是法官。

于 2013-08-09T15:21:46.800 回答