Pertanyaan Apakah ini cara yang tepat untuk membungkus pustaka pihak ketiga sebagai layanan Angular.js?


Saya mencoba membungkus Snap.svg sebagai layanan aplikasi saya. Kode di bawah ini berfungsi, tetapi apakah ini cara yang tepat untuk melakukannya?

var svgService = angular.module("svgService", []);

svgService.factory("svgService", [
  function () {
    if (Snap) {
      return Snap;
    }
  }
]);

5
2017-08-02 16:26


asal


Jawaban:


Anda if cek akan melempar ReferenceError: Snap is not defined kesalahan pula jika Snap tidak ada.

Anda dapat mengganti pernyataan kondisi seperti ini agar aman:

if (typeof Snap !== 'undefined') {

atau jika Snap dalam window, hanya referensi secara langsung:

if (window.Snap) {

dan bahkan lebih baik, setidaknya ketika datang ke pengujian unit, menggunakan built-in $window layanan karena memungkinkan Anda untuk mengejeknya.

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; 
});

Semoga ini membantu.


8
2017-08-02 17:42