答案 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)
}
})