Javascript AngularJS筛选搜索结果:错误:[ng:areq]

Javascript AngularJS筛选搜索结果:错误:[ng:areq],javascript,angularjs,Javascript,Angularjs,我试图在angularjs中过滤搜索结果,但在我的chrome控制台上出现此错误:错误:[ng:areq] 这是我的代码片段 <div id="notebooks" ng-controller="NotebookListCtrl"> <input type="text" id="query" ng-model="query"/> <select ng-model="orderList"> <option value="name">B

我试图在angularjs中过滤搜索结果,但在我的chrome控制台上出现此错误:错误:[ng:areq]

这是我的代码片段

<div id="notebooks" ng-controller="NotebookListCtrl">
  <input type="text" id="query" ng-model="query"/>
  <select ng-model="orderList">
    <option value="name">By name</option>
    <option value="-age">Newest</option>
    <option value="age">Oldest</option>
  </select>
  <ul id="notebook_ul">
    <li ng-repeat="notebook in notebooks | filter:query | orderBy: orderList">
      name: {{notebook.name}}<br/>
      procesor: {{notebook.procesor}}<br/>
      <div class="right top">{{notebook.age}}</div>
    </li>
  </ul>
  <span>Number of notebooks: {{notebooks.length}}</span>
</div>

按姓名
最新的
最老的
  • 名称:{{notebook.name}}
    procesor:{{notebook.procesor}}
    {{notebook.age}
笔记本数量:{{notebes.length}
这是我所做的一次重击

似乎一切正常,但我不知道为什么会出现上述错误。

错误是

Argument 'NotebookListCtrl' is not a function, got undefined
如果您在浏览器控制台中单击[ng:areq]旁边,则可以找到

出现此错误是因为您没有以正确的方式定义控制器。AngularJS 1.2之后不允许使用“控制器作为全局函数”语法,而是需要将其添加到模块中,如下所示:

angular.module("myApp").controller('NotebookListCtrl',NotebookListCtrl);
要进行缩小安全注射,还应执行以下操作

NotebookListCtrl.$inject = ['$scope'];

正确定义控制器,如下所示

更新:


@JnG。是的,你可以,尽管你在重复。当然要使用“ng src”指令,它为您视图中的img标签提供图像路径。我已经找到了解决方案!谢谢你的回答是方法是可以的。
var app = angular.module("myApp",["ngSanitize"]);

app.controller('NotebookListCtrl',['$scope',function($scope){
  $scope.notebooks = [
    {"name": "Lenovo",
     "procesor": "Intel i5",
     "age": 2011},
    {"name": "Toshiba",
     "procesor": "Intel i7",
     "age": 2010},
    {"name": "Toshiba",
     "procesor": "Intel core 2 duo",
     "age": 2008},
    {"name": "HP",
     "procesor": "Intel core 2 duo",
     "age": 2012},
    {"name": "Acer",
     "procesor": "AMD",
     "age": 2006},
    {"name": "Lenovo",
     "procesor": "Intel i5",
     "age": 2009},
    {"name": "Toshiba",
     "procesor": "Intel i7",
     "age": 2008},
    {"name": "Lenovo",
     "procesor": "Intel i5",
     "age": 2011},
    {"name": "Toshiba",
     "procesor": "Intel i7",
     "age": 2010},
    {"name": "Toshiba",
     "procesor": "Intel core 2 duo",
     "age": 2008},
    {"name": "HP",
     "procesor": "Intel core 2 duo",
     "age": 2012},
    {"name": "Acer",
     "procesor": "AMD",
     "age": 2006},
    {"name": "Lenovo",
     "procesor": "Intel i5",
     "age": 2009},
    {"name": "Toshiba",
     "procesor": "Intel i7",
     "age": 2008},
    {"name": "Lenovo",
     "procesor": "Intel i5",
     "age": 2011},
    {"name": "Toshiba",
     "procesor": "Intel i7",
     "age": 2010},
    {"name": "Toshiba",
     "procesor": "Intel core 2 duo",
     "age": 2008},
    {"name": "HP",
     "procesor": "Intel core 2 duo",
     "age": 2012},
    {"name": "Acer",
     "procesor": "AMD",
     "age": 2006},
    {"name": "Lenovo",
     "procesor": "Intel i5",
     "age": 2009},
    {"name": "Toshiba",
     "procesor": "Intel i7",
     "age": 2008}
  ];

  $scope.orderList = "name";

}]);
angular.module("myApp",["ngSanitize"])
.controller('NotebookListCtrl', ['$scope',
  function ($scope) {
    $scope.notebooks = [
      {"name": "Lenovo",
       "procesor": "Intel i5",
       "age": 2011},
      {"name": "Toshiba",
       "procesor": "Intel i7",
       "age": 2010},
      {"name": "Toshiba",
       "procesor": "Intel core 2 duo",
       "age": 2008},
      {"name": "HP",
       "procesor": "Intel core 2 duo",
       "age": 2012},
      {"name": "Acer",
       "procesor": "AMD",
       "age": 2006},
      {"name": "Lenovo",
       "procesor": "Intel i5",
       "age": 2009},
      {"name": "Toshiba",
       "procesor": "Intel i7",
       "age": 2008},
      {"name": "Lenovo",
       "procesor": "Intel i5",
       "age": 2011},
      {"name": "Toshiba",
       "procesor": "Intel i7",
       "age": 2010},
      {"name": "Toshiba",
       "procesor": "Intel core 2 duo",
       "age": 2008},
      {"name": "HP",
       "procesor": "Intel core 2 duo",
       "age": 2012},
      {"name": "Acer",
       "procesor": "AMD",
       "age": 2006},
      {"name": "Lenovo",
       "procesor": "Intel i5",
       "age": 2009},
      {"name": "Toshiba",
       "procesor": "Intel i7",
       "age": 2008},
      {"name": "Lenovo",
       "procesor": "Intel i5",
       "age": 2011},
      {"name": "Toshiba",
       "procesor": "Intel i7",
       "age": 2010},
      {"name": "Toshiba",
       "procesor": "Intel core 2 duo",
       "age": 2008},
      {"name": "HP",
       "procesor": "Intel core 2 duo",
       "age": 2012},
      {"name": "Acer",
       "procesor": "AMD",
       "age": 2006},
      {"name": "Lenovo",
       "procesor": "Intel i5",
       "age": 2009},
      {"name": "Toshiba",
       "procesor": "Intel i7",
       "age": 2008}
    ];
    $scope.orderList = "name";
  }
]);