Chrome 앱에서 직렬 통신을위한 작은 JS 라이브러리를 작성했으며 자체적으로 올바르게 작동합니다. 그러나 Angular와 통합 할 때 문제가 있습니다. 컨트롤러 외부의 직렬 객체 속성을 내부에서 볼 수있는 방법이 없기 때문에 해결 방법을 찾을 수 없었습니다. 이상적으로는 너무 비싸지 않은 솔루션이 있습니다. 전체 라이브러리를 각도 지향적 인 형식으로 변환하는 방법을 배제하지 않습니다. 그러나이 상황에서 나는 그것이 서비스 또는 다른 형식으로되어야하는지 확신 할 수 없다. 어떤 도움을 주시면 감사하겠습니다.AngularJS에서 외부 변수보기?
6
A
답변
6
그냥 여기에서 아이디어를 빌려 :.이 작업을 수행 할 수 있도록 In AngularJS, how do I add a $watch on the URL hash?
$ 범위 $ 시계는, 첫 번째 인수로 기능을 허용합니다
$scope.$watch(function() {
return mylib.myproperty
}, function (value) {
// do stuff
});
UPDATE : 코멘트에 언급 한 바와 같이 , mylib.myproperty가 변경되면 컨트롤러는 다음 다이제스트 cicle까지 알 수 없습니다. 그냥 시계를 삭제할 수 있도록, 당신이 이미 mylib.on_myproperty_change
이 지금부터
mylib.on_myproperty_change(function(){
$scope.$digest(); // this will cause the $watch to be re-evaluated
});
하지만 당신이 정말로 $watch
아무것도 필요하지 않습니다 MYLIB은 각 지원하지 않기 때문에 당신은 콜백 메커니즘은 자바 스크립트 일반을 사용할 필요가
myAngularApp.service('MyCustomLib', function(){
return myCustomLibInstance;
}]
);
그런 다음 당신이 컨트롤러에 그것을 통과하고 난을 저장할 수 있습니다
mylib.on_myproperty_change(function(){
//do the stuff that you did in the the $watch
$scope.$digest();
});
1
는 각도 서비스로 사용자 정의 라이브러리 만들기 로컬 범위에 t :
function MyCtrl($scope,MyCustomLib) {
var myCustomLib = MyCustomLib;
그리고 지금 @tony는 그의 대답에 제안했던대로, 당신은 컨트롤러 내부에서 사용자 정의 라이브러리에 액세스 할 수 있으며 당신이 시계를 설정할 수 있습니다
$scope.$watch(
function() {
return myCustomLib.property
},
function (newValue, oldValue) {
// do stuff
});
0
다이제스트주기를 시작하는 방법은 $timeout(function() {})
입니다.
$scope.$digest()
이미 실행중인 다이제스트주기가있는 경우 오류가 발생합니다.
나는 확실하게 나를 위해 실행되지 않은
// From my controller
externalService.setOnChangeCallback(function() { $timeout(function() {}) });
// in my service
// on change event
this.onChangeCallBack();
$scope.$watch
로 있습니다. 때로는 시청 가치가 재평가되었지만 때로는 그렇지 않은 경우도있었습니다.
관련 문제
- 1. expressjs 변수보기
- 2. Xcode에서 변수보기
- 3. AngularJS에서 느린 외부 API 요청
- 4. GDB : 주어진 범위에서 변수보기
- 5. php 세션 변수보기
- 6. 디버그 중 SSIS의 변수보기
- 7. Visual C#에서 변수보기?
- 8. AngularJS 1.0.7에서 sessionStorage 변수보기
- 9. 가비지 수집 변수보기
- 10. AngularJS : $ watch가없는 변수보기
- 11. CS5.5 "변수"창에서 변수보기
- 12. Cygwin에서 Windows 환경 변수보기
- 13. JavaScript의 익명 함수에서 변수보기
- 14. 웹 모드의 extern 변수보기
- 15. Eclipse에서 변수보기 android에서 Sequoyah
- 16. 브라우저에서 세션 변수보기
- 17. 다른 사용자의 $ PATH 변수보기
- 18. AngularJS에서 ng-include에 외부 URL 사용
- 19. angularjs에서 외부 URL로 페이지를 리디렉션하는 방법은 무엇입니까?
- 20. angularjs에서 iframe의 외부 URL을 여는 방법은 무엇입니까?
- 21. AngularJS에서 허용되는 경우 javacript 외부 파일 포함
- 22. 설정 컨트롤러 constructer에서 일부 변수보기
- 23. ARC Not Release 컨트롤러 변수보기
- 24. VS 디버깅 및 변경 변수보기
- 25. MVC - 변수보기? MVC 패턴을 사용
- 26. Breeze Durandal보기에서 변수보기 셸 viewmodel
- 27. 보기에 전달 된 모든 변수보기
- 28. $ data 변수보기 Model To View
- 29. 동일한 방법으로 변수보기 = null ios
- 30. 자바 디버깅 - 범위를 벗어나는 변수보기
+1; 이것은 컨트롤러에 "전역 종속성"을 추가하지는 않지만 단위 테스트 관점에서 보편적으로 나쁜 것으로 간주됩니다. – JeffryHouser
콜백은 무언가 다이제스트주기가 발생할 때만 호출됩니다. 사용자/앱이 상호 작용하지 않는 경우 – Sylvain
@ Silvain이 말했듯이, 이것에 대한 나의 우려는 사용자 상호 작용없이 동적 업데이트를 원한다는 것입니다. 내가 할 수있는 방법이 있습니까? 이거? – Andy