我试图将Snap.svg包装为我的应用程序的服务。下面的代码有效,但这是正确的方法吗?
var svgService = angular.module("svgService", []);
svgService.factory("svgService", [
function () {
if (Snap) {
return Snap;
}
}
]);
答案 0 :(得分:8)
如果if
不存在,您的ReferenceError: Snap is not defined
支票会抛出Snap
错误。
您可以将这样的条件语句替换为安全:
if (typeof Snap !== 'undefined') {
或如果Snap
位于window
,请直接引用它:
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;
});
希望这有帮助。