这是"对"写一个Angular自定义指令的方法?

时间:2014-11-07 20:13:12

标签: jquery angularjs directive

...并且自定义指令是实现目标的“正确”方式吗?

我有一个应用程序刚刚转换为Angular(由其他人,因为我是一个极端的菜鸟),显示3页(更准确地说,3组内容)并使用模板和HTML部分来这样做。

在转换之前,这三个页面中的每一个都通过GET请求加载,并在每个请求中重新加载整个页面。每次加载页面时,都会在页面中的元素上附加一些jQuery插件。像这样:

$(document).ready(function () {
    $('#cntnr_photos').mCustomScroll();
    $("image[rel='tooltip']").applyTooltips();
    // ...and a couple more
}); 

现在这些页面已经与Anglar一起组装和显示,每次请求新页面时,整个页面都不再重新加载...只是页面重新加载的“内容”和上面的javascript只用于每次运行第一次运行请求应用程序页面。

通过一些研究,我了解到自定义指令是正确的,“Angular”将其应用于应用程序中的3组内容中的每一组。

以下是我提出的建议:

app.directive('init',
        function() {
            return {
                restrict : 'A',
                link : function(scope, element, attrs) {

                    var base = $(element);

                    var initHscroll = function(cntnrID, options) {
                        var opts_dflt = {
                            contentTouchScroll : 20,
                            axis : "x",
                            autoExpandScrollbar : true,
                            theme : "dark",
                            scrollButtons : {
                                enable : true
                            },
                            mouseWheel : {
                                enable : false
                            },
                            advanced : {
                                autoExpandHorizontalScroll : true
                            }
                        }

                        var opts = typeof options !== 'undefined' ? options : opts_dflt;
                        var oCntnr = typeof cntnrID !== 'undefined' ? base.find($(cntnrID)) : base.find($('#cntnr_photos'));

                        oCntnr.mCustomScrollbar(opts);
                    };

                    var initTooltips = function(selector) {
                        var sel = typeof selector !== 'undefined' ? selector : "img[rel='tooltip']";

                        base.find(sel).applyTooltips();
                    }

                    scope.$on("$viewContentLoaded", function(event, next, current) {
                        initHscroll();
                        initTooltips();
                       // jcf.customForms.replaceAll();
                    });
                }
            };
        });

在这里解释了我正确阅读的自定义指令是什么?如果是这样,我的似乎是否符合最佳实践并采取“正确”的方式?

0 个答案:

没有答案