자바 스크립트 경고/onkeyup 함수를 호출하고 싶습니다.angular.js on-keyup이 작동하지 않습니다.
하지만 작동하지 않습니다.
<input ng-keyup="alert('hi')">
어떤 문제가 있습니까 : 간단하게 Plunker
볼?
자바 스크립트 경고/onkeyup 함수를 호출하고 싶습니다.angular.js on-keyup이 작동하지 않습니다.
하지만 작동하지 않습니다.
<input ng-keyup="alert('hi')">
어떤 문제가 있습니까 : 간단하게 Plunker
볼?
설명문은 현재 $scope
의 컨텍스트에서 평가되므로 참조 할 모든 항목은 $scope
에 선언해야합니다.
예컨대 :
.controller('someCtrl', function ($scope, $window) {
$scope.alert = $window.alert.bind($window);
// Or
// $scope.alert = function (msg) { $window.alert(msg); }
});
참조, 또한,이 short demo.
Angular는 표현식을 평가하기 위해 JavaScript의 eval()을 사용하지 않습니다. Angular의 $ parse 서비스는 이러한 표현을 처리합니다.
각도 표현식은 창, 문서 또는 위치와 같은 전역 변수에 액세스 할 수 없습니다. 이 제한은 의도적 인 것입니다. 미묘한 버그의 공통 원인 인 전역 상태에 대한 우발적 인 액세스를 방지합니다.
대신 표현식에서 호출 된 함수에서 $ window 및 $ location 같은 서비스를 사용하십시오. 이러한 서비스는 전역에 대한 조롱 가능한 액세스를 제공합니다. 당신이 당신의 컨트롤러 기능 경고를 작성하거나
angular.module('test',[]).controller('testCtrl',function($scope){
$scope.alert = function(text){
alert(text)
}
})
의 답에서 $ 윈도우 서비스 참조를 주입해야 의미
는'$의 location'을 의미하는 것 '$ window '가'window'와 어떤 관계가 있는지'window.location'에 있습니다 (전혀 사실이 아닙니다). – gkalpak
내가 왜 $ 위치가 창을 가리키는 지 생각했다. 위치? –
그리고'$ window.alert()'대신'alert()'를 사용하여) 전역 상태에 직접 접근하고 있습니다. 테스트 가능성을 상하게 함 :) – gkalpak