...并且自定义指令是实现目标的“正确”方式吗?
我有一个应用程序刚刚转换为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();
});
}
};
});
在这里解释了我正确阅读的自定义指令是什么?如果是这样,我的似乎是否符合最佳实践并采取“正确”的方式?