2017-12-29 16 views
0

내 AngularJs 컨트롤러 안에 NoSleep.js을 사용해야합니다. bower를 사용하여 NoSleep을 설치했지만 anglejs 컨트롤러에 주입해야하지만 어떻게해야합니까? NoSleep은 각도 서비스가 아니므로이 선언을 사용하려면 var noSleep = new NoSleep();을 사용해야합니다.anglejs 컨트롤러에 외부 javascript 파일을 삽입하는 방법

나는 카르마,

어떤 조언을 바벨, 웹팩, 꿀꺽를 사용하고 있는데?

+0

개발 설정을 지정해야합니다. 웹팩을 사용하고 있습니까? 그런트/꿀꺽 꿀꺽? etc. –

+0

안녕하세요 @FranciscoMateo webpack, 멍청이 –

답변

1

JS lib가 있고 Angularjs 라이브러리가 아닌 경우 HTML 파일에 script 태그를 사용하여 추가하고 AngularJ를 만들기 전에 익숙한 방식으로 호출하십시오.
시도해 보셨습니까?

다른 방법으로 이동하여 AgnularJs 서비스 (AngularJs 서비스 작성 및 그 안에 lib 메소드 호출)로 lib를 감싸고 원하는 곳에이 새로운 서비스를 삽입하십시오.

업데이트 :
당신을 위해 어쩌면 충분하고 있었다, 그러나 나는 당신의 서비스를 구축하고 사용자가 만든 메소드를 호출하는 것이 좋습니다 생각하지만, 무엇 @ 마이크 Feltman와 @의 richbai90가 대답했다 이러한 방법을 사용 내부 다른 하나 nosleep lib 디렉토리 변경을 원하고, 그 새 LIB는 다른 방법 이름이있는 경우

(function() { 
    'use strict'; 

    angular.module('nosleep.module', []).service('nosleep', ['', nosleepFunc]); 

    function nosleepFunc() { 
     var nosleepObj = new NoSleep(); 

     var service = { 
       method1: method1, 
       method2: method2 
       //... etc 
     }; 

     function method1() { 
      return nosleepObj.method1(); 
     } 

     // ..... other methods 

     return service; 
    } 

})(); 

이 방법은, 당신은 단지 필요 적 라이브러리는 당신이 원하는 (이것은 C#에서 인터페이스를 사용하여 같은 수 있습니다) 서비스 코드를 변경할 수 있습니다.

1

NoSleep 단지 전역 범위에서 함수를 선언처럼 이런 식으로 뭔가 할 수 있도록 그것은 같습니다

NoSleepService.js

(function() { 
    // place noSleep minified code here 
    angular.module('myApp').service('noSleep', NoSleep); 
})() 

둘러싸고있는 내 NoSleep 객체를 생성합니다 함수를 사용하여 전역 범위를 오염시키지 말고 각도 응용 프로그램에 new 인스턴스를 등록하십시오.

+0

안녕 @ richbai90, 작동하지 않습니다. –

1

일반적으로 Angularjs 응용 프로그램에서 비 angularjs 라이브러리를 사용할 때는 모듈로 래핑됩니다. 그런 다음 앱에 모듈을 삽입하고이 같은 보이는 모듈을 만들 것 누른 후 필요에 따라 당신이 당신의 컨트롤러에이 함께 포장 한 서비스/공장을 주입 : 다음

(() => { 
    "use strict" 
    angular.module('nosleep.module', []).factory('nosleep', ['', function() { 
    return new NoSleep() 
    }]) 
})() 

당신 ' D 같은 것을 사용하여 기본 응용 프로그램 모듈에 모듈을 삽입 : 당신이 nosleep를 주입 것 nosleep에 액세스해야하는 사용자의 컨트롤러에서 다음

angular.module('myApp', '[nosleep-module') 

합니다.

class myController { 
    constructor(nosleep) { 
     this.nosleep = nosleep 
    } 
} 

그런 다음 컨트롤 내에서이 this.nosleep 그것을 해결할 수 있습니다.