ng-keyup 不执行表达式

ng-keyup doesn't execute the expression

我正在使用 angular 1.5.0-beta2

我正在尝试在文本输入上创建一个简单的 keyUp 检测。

代码 div:

<div ng-controller="IndexController">
 <div class="jumbotron">
  <h1>Hello and Welcome to MyAlcoholist</h1>
  <p>A growing database of cocktails and drinks for your reach</p>
  <hr/>
  <p>
   <span class="glyphicon glyphicon-search" aria-hidden="true">
   Search for Cocktail
         </span></p>
  <p>
   <input type="text" id="cocktail_search_input" ng-model="test" ng-keyup="cocktailSearchInput($event.keyCode)" />
   <span id="cocktail-search-icon-span"></span>
  <a href="javascript:cocktailInfo()" class="btn btn-primary">
         Cocktail Info
        <span class="glyphicon glyphicon-chevron-right"></span>
        </a>
 </div>
<div class="container">
 <div class="row">
  <div id="latest-drinks-div" class="col-md-3"></div>
  <div id="latest-cocktails-div" class="col-md-3">
    <p>blah blah blah blah blah blah</p>
       </div>
  <div class="col-md-3">
    <p>blah blah blah blah blah blah</p>
      </div>
  <div class="col-md-3">
    <p>blah blah blah blah blah blah</p>
      </div>
 </div>
   </div>
</div>

我的app.js

(function(){
var app = angular.module('myalcoholist',['ngRoute']);
app.controller('IndexController', function () {
    this.cocktailSearchInput = function(code) {
        alert(code);
    }
});
})()

我没有看到任何错误,cocktailSearchInput 函数没有被执行。

有什么想法吗?

看起来好像 cocktailSearchInput 绑定到 controller 本身(通过 this),而不是控制器的 $scope

尝试将 $scope 注入 controller,然后将函数挂起。通过这样做,该功能现在可以在 $scope 上使用,因此可以从 DOM:

访问
app.controller('IndexController', function ($scope) {
    $scope.cocktailSearchInput = function(code) {
        alert(code);
    }
});

这是一个带有你的代码的 plunker,你会注意到我们在 keyUp 上收到警报:http://plnkr.co/edit/L3zmHk1jugbX6jrzx4i8?p=info