angular.js on-keyup不起作用

时间:2014-09-14 17:34:16

标签: angularjs

我想发一个javascript警报/调用一个函数onkeyup。

但它不起作用。见Plunker

简单地:

<input ng-keyup="alert('hi')">

出了什么问题?

2 个答案:

答案 0 :(得分:3)

ngKeyup exprssion将在当前$scope的上下文中进行评估,因此您引用的所有内容都需要在$scope上声明。

E.g:

.controller('someCtrl', function ($scope, $window) {
    $scope.alert = $window.alert.bind($window);
    // Or
    // $scope.alert = function (msg) { $window.alert(msg); }
});

另请参阅此 short demo

答案 1 :(得分:3)

Angular不使用JavaScript的eval()来计算表达式。相反,Angular的$ parse服务处理这些表达式。

Angular表达式无法访问全局变量,如窗口,文档或位置。这种限制是故意的。它可以防止意外访问全局状态 - 这是微妙错误的常见来源。

而是在表达式调用的函数中使用$ window和$ location等服务。这些服务提供对全局变量的可模拟访问。

这意味着您应该在控制器中编写函数警报,或从中注入$ window服务和引用

angular.module('test',[]).controller('testCtrl',function($scope){
        $scope.alert = function(text){
          alert(text)
        }

 })

here is updated example

from docs