2017-08-26 2 views
0

私はangularjsを初めて使用しています。かなり迷惑な問題が発生しました。 私のアプリでは、すべての機能を保持するファクトリを使用していて、コントローラにそれらを使用させます。 配列を返してWebページの に出力する関数を作成しましたが、返された配列に変数が1つしかない場合は、空のリストのソートが出力されます。配列に1つ以上の変数がある場合は正常に動作します。 console.logは、配列に変数が含まれていることを示していますが、リストには表示されません。1変数のAngularjs配列はng-repeatで印刷されません

私はブートストラップも使用しています。

私は自分の問題を正しく説明してくれることを願っています。 助けてくれてありがとう!

工場:

 function getArray(var){ 
     return $http.get(restURL+var).then(
       function(response){ 
        return response.data.coupon; 
       } 
     ); 
    } 

コントローラー:

​​

HTML:私は1つのレコードだけがある場合、あなたのAPIは、(配列の代わりに)オブジェクトを返していると信じて

<div id="getArrayDiv">  
     <table class="table table-hover"> 
     <thead> 
      <tr> 
      <th>#</th> 
      <th>&nbsp;Title</th> 
      <th></th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr ng-repeat="coupon in arrayVar"> 
      <td>{{coupon.id}}</td> 
      <td>{{coupon.title}}</td> 
      </tr> 
     </tbody> 
    </table> 
    <input type="text" class="form-control" placeholder="Enter Type" ng-model="var" required="true"> 

    <button class="btn btn-success" ng-click="getArrayFunction()" >Get Array</button> 
</div> <!-- /getArrayDiv --> 
+0

あなたはどこでもあなたのhtmlでのNGアプリディレクティブを使用していますか? – Winnie

+0

はい、もちろんです。私が言ったように、すべてが完全に動作しますが、唯一の問題は返された配列に1つの変数しか含まれていない場合です。 –

+0

@DorGolanあなたは{{arrayVar}}をして、その1つの変数がhtmlのように見えることを表示できます –

答えて

2

複数のレコードがある場合は配列を返します。

ここでは回避策がありますが、工場のメソッドのreturn文を以下のステートメントに置き換えるだけで正常に動作します。 https://www.w3schools.com/jsreF/jsref_concat_array.asp

希望あなたの質問のためにこの作品:ここ

return [].concat(response.data.coupon); 

concat機能についての詳細を知るために参照リンクです。乾杯!あなたの関数を呼び出すとされていないため、

+0

@ dor-golan、これを試しましたか?これは私のために働いた。 –

+0

これは実際に動作します!私がconcat()関数を見るのは初めてですので、何をしているのか分かりませんでしたし、読んでみたいと思っていました。 問題を解決するためのクイックフィックスまたは正当な方法と考えられていますか? –

+0

'concat'関数は渡された配列またはjsonオブジェクトをマージし、最終結果を返します。ここにw3Schools https://www.w3schools.com/jsreF/jsref_concat_array.aspのrefリンクがあります。 これは実用的な解決策です(一時的な修正ではありません)。 –

0

それは、あなたがこの方法でそれを宣言した後、あなたの関数を呼び出してください

$scope.getArrayFunction(); 
+0

私は関数を呼び出しています - ng-click = "getArrayFunction()"、 また、関数は複数の変数を持つ配列で動作するので、問題はありません。 –

+0

"$ scope.arrayVar = coupons;"の後に "Console.log($ scope.arrayVar)"を追加してくださいあなたの関数内にあり、ブラウザのコンソールから結果をここに書いてください –

関連する問題