javascript - 无法使用 Angular Material 自动完成读取未定义的属性 'then'

标签 javascript angularjs angular-material

我有这样的代码:

<body layout="row" ng-app="myApp" controller="main" ng-cloak>
  <md-autocomplete md-items="item in search(searchText)"
                   md-search-text="searchText"
                   md-item-text="item.name"   
                   md-selected-item="selectedUser"
                   md-no-cache="true"
                   md-floating-label="Enter user ID or email address">
    <md-item-template>
      <span md-highlight-text="searchText">{{item.name}} {{item.surname}} &lt;{{item.email}}&gt;</span>
    </md-autocomplete>
</body>

和js:

var app = angular.module('myApp',['ngMaterial']);
app.controller('main', function($scope, $q, $timeout) {
  var items = [
    {
      userId: 10,
      name: 'Foo',
      surname: 'Bar',
      email: 'email@example.com'
    }
  ];
  $scope.search = function(search) {
    console.log('search');
      var deferred = $q.defer();
      $timeout(function() {
          deferred.resolve(items);
      }, Math.random() * 500, false);
      return deferred.promise;
  };
});

当我输入一些内容时,我遇到了这个异常,我的代码出了什么问题。

var app = angular.module('myApp',['ngMaterial']);
app.controller('main', function($scope, $q, $timeout) {
  var items = [
    {
      userId: 10,
      name: 'Foo',
      surname: 'Bar',
      email: 'email@example.com'
    }
  ];
  $scope.search = function(search) {
    console.log('search');
      var deferred = $q.defer();
      $timeout(function() {
          deferred.resolve(items);
      }, Math.random() * 500, false);
      return deferred.promise;
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body layout="row" ng-app="myApp" controller="main" ng-cloak>
  <md-autocomplete md-items="item in search(searchText)"
                   md-search-text="searchText"
                   md-item-text="item.name"   
                   md-selected-item="selectedUser"
                   md-no-cache="true"
                   md-floating-label="Enter user ID or email address">
    <md-item-template>
      <span md-highlight-text="searchText">{{item.name}} {{item.surname}} &lt;{{item.email}}&gt;</span>
    </md-autocomplete>
</body>

<!--
Copyright 2016 Google Inc. All Rights Reserved. 
Use of this source code is governed by an MIT-style license that can be in foundin the LICENSE file at http://material.angularjs.org/license.
-->

这里是CodePen

最佳答案

简单的错误。添加ng-controller="main"

关于javascript - 无法使用 Angular Material 自动完成读取未定义的属性 'then',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39765395/

相关文章:

javascript - 如何使用 javascript 从 api 读取 JSON 数据

angularjs - ng-repeat 每次重复添加两行

javascript - 将日期从 JSON 写入到 DatePicker 中

javascript - $state.go 不适用于 angularjs 1.5

带有后缀的 angular matSelect 触发点击清除

javascript - 谷歌图表 "Cannot read property '日期字段'未定义“的日期时间

javascript - Angular (4.1.3) ng-select2 错误

javascript - 添加要运行的脚本的编辑器,然后删除它们 - 临时编辑器权限

css - Angular Materials Flex-box 在 iOS Safari 上无法正确显示

angular - 如何使用 labelPosition ="bottom"更改 Material 步进线样式