【发布时间】:2014-09-25 15:40:38
【问题描述】:
我正在尝试将 Snap.svg 包装为我的应用程序的服务。下面的代码有效,但这是正确的方法吗?
var svgService = angular.module("svgService", []);
svgService.factory("svgService", [
function () {
if (Snap) {
return Snap;
}
}
]);
【问题讨论】:
我正在尝试将 Snap.svg 包装为我的应用程序的服务。下面的代码有效,但这是正确的方法吗?
var svgService = angular.module("svgService", []);
svgService.factory("svgService", [
function () {
if (Snap) {
return Snap;
}
}
]);
【问题讨论】:
如果Snap 不存在,您的if 检查将引发ReferenceError: Snap is not defined 错误。
为了安全起见,您可以像这样替换条件语句:
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;
});
希望这会有所帮助。
【讨论】: