Angularjs 这是将第三方库包装为Angular.js服务的正确方法吗?
我正在尝试将Snap.svg包装为我的应用程序的服务。下面的代码可以工作,但这是正确的方法吗Angularjs 这是将第三方库包装为Angular.js服务的正确方法吗?,angularjs,svg,Angularjs,Svg,我正在尝试将Snap.svg包装为我的应用程序的服务。下面的代码可以工作,但这是正确的方法吗 var svgService = angular.module("svgService", []); svgService.factory("svgService", [ function () { if (Snap) { return Snap; } } ]); 如果if检查将抛出ReferenceError:Snap未定义错误,如果Snap不存在 为了安全起见
var svgService = angular.module("svgService", []);
svgService.factory("svgService", [
function () {
if (Snap) {
return Snap;
}
}
]);
如果
if
检查将抛出ReferenceError:Snap未定义错误,如果Snap
不存在
为了安全起见,可以这样替换条件语句:
if (typeof Snap !== 'undefined') {
或者,如果捕捉
位于窗口
,只需直接引用即可:
if (window.Snap) {
甚至更好,至少在单元测试方面,使用内置的$window
服务,因为它允许您模拟它
svgService.factory("svgService", function ($window) {
// the if check is unnecessary since an undefined
// is returned anyway when the Snap doesn't exist.
return $window.Snap;
});
希望这能有所帮助。我不太确定这个回答。if(typeof Snap!==“undefined”){}实际上与if(Snap){}相同;关键是,如果Snap包含错误的值,则两者都不起作用。