2016-10-03 8 views
0

モックアップで先読み機能を実装しようとしましたが、先読みの値が変更されてテーブルコンテンツが更新されますが、私はバックエンドのためのノードでマングースORMでのMongoDBを使用し、Angularjsエラー:[filter:notarray]予想される配列ですが、先読みで{

Angularjs Error: [filter:notarray] Expected array but received: {}

vm.getEnterprises = function(term){ 
 
      vm.selected = undefined; 
 
      return $http.get(path +'/enterprise/'+ term + '/search') 
 
      .then(function(response){ 
 
       
 
       vm.customEnterprises = response.data; 
 
       vm.showcontent = true; 
 
       vm.defaultcontent = false; 
 
       return response.data; 
 
       console.log(response); 
 
      }); 
 
     }

、APIコードは、

です

var mongoose = require('mongoose'); 
 

 
var enterprise = mongoose.model('enterprise'); 
 

 
var search = function(req, res){ 
 

 
     
 
     var name = req.params.name; 
 
     var regexValue = '\.*' + name ; 
 
     
 
\t \t enterprise.find({'name': new RegExp(regexValue, 'i')},function(err, data){ 
 
\t \t \t if (err){ 
 
\t \t \t \t console.log('err',err); 
 
\t \t \t } else { 
 
\t \t \t \t return res.json(data); 
 
\t \t \t \t console.log(data); 
 
\t \t \t } 
 
\t \t }); 
 
} 
 
module.exports = { 
 
\t searchEnterprise : search 
 
};

マイ角度UIコードは、

input type="text" id="search" ng-model = "vm.selected" class="form-control input-md enable collapse" placeholder="search for an enterprise" uib-typeahead = "name as enterprise.name for enterprise in vm.getEnterprises($viewValue)| filter:$viewValue | limitTo : 3 "> 

答えて

0

おそらく、あなたは気づいfilterは、あなたのvm.getEnterprisesは基本的に約束の対象ではない実際のデータを返し、入力としてArrayを受け入れます。

あなたがする必要があるのは、返品データをスコープレベルの変数(テンプレートと同じスコープ)に割り当てるだけです。 $scope.retDataはその後

name as enterprise.name for enterprise in retData | filter:$viewValue | limitTo : 3 
+0

vm.getEnterprises($ viewValue)にテンプレートを変更する私はそれを呼び出すことが行われることになるかというscope.retdataを$変更した場合、バックエンドでAPI呼び出しを行う関数を呼び出します。 – Idlliofrio

+0

私が意図したことは 'return response.data'の代わりに' vm.getEnterprises'の中にあり、応答データをスコープレベルの変数に代入し、あなたのテンプレートがそれにアクセスできることを確認してから、 'vm.getEnterprises($ viewValue)'その変数 –

+0

Btwには、 '$ http.get'の' return'も必要ないと思います。つまり、あなたの関数 'vm.getEnterprises'は基本的に何も返しませんが、APIを呼び出してデータを取得し、そのスコープレベル変数にデータを格納します。そして、 'uib-headhead'は約束が解決されたら、そのスコープレベル変数の変化を検出するはずです。 –

関連する問題