2017-12-07 9 views
0

モデル内のデータを手動でフィルタリングするために手動で行った配列で置き換えようとしています。私はこのデータをmodel.read()から取得します。問題は、ui5のモデル内のデータを更新するための文書化された方法のいずれも機能していないか、呼び出されたことに応答するように見えることさえありません。私は、ODATA v2を使用していますが、すべてのこれらの技術は、v2のモデルのために働くために文書化されています:https://openui5.hana.ondemand.com/docs/topics/6c47b2b39db9404582994070ec3d57a2.htmlUI5はコントローラーからモデルに新しいデータをバインドします

filterFeed: function() { 
    var model = this.getOwnerComponent().getModel(); 
    var view = this.getView(); 

    model.read("/assessmentFeed", { 
     success: function(odata) { 
      var comments = odata.results; 
      var results = []; 

      // ... do work to fill 'results' 

      model.setProperty('/assessmentFeed', results); 

      var json = new sap.ui.model.json.JSONModel(results); 
      view.setModel(json, "/assessmentFeed"); 

      var list = view.byId("feedList"); 
      list.bindAggregation("items", "/assessmentFeed", new sap.m.FeedListItem()); 
     } 
    }); 
}, 

これは私のXMLビューに

<layout:content> 
    <m:FeedInput post="onFeedPost" class="sapUiSmallMarginTopBottom"/> 
    <m:List id="feedList" showSeparators="Inner" items="{path: '/assessmentFeed', sorter: {path: 'DATE', descending: true}}"> 
     <m:FeedListItem sender="{MEMBERID}" timestamp="{DATE}" text="{COMMENT}" convertLinksToAnchorTags="All"/> 
    </m:List> 
</layout:content> 

フィードリストで、私はすべてのエラーを得ることはありませんが、上記のすべての関数を呼び出した後には、識別可能な効果はありません。

enter image description here

これはassessmentFeedはクロムデバッガからモデルのバインディングであることを示すモデルのaBindings配列からです。

答えて

1

なぜデータをJSONモデルとoDataモデルに入れようとしているのですか?

コントローラー:

 filterFeed: function() { 
      var model = this.getOwnerComponent().getModel(); 
      var view = this.getView(); 
      var json = new sap.ui.model.json.JSONModel(); //New JSON model 

      model.read("/assessmentFeed", { 
       success: function(odata) { 
        var comments = odata.results; 
        var results = []; 

        // ... do work to fill 'results' 

        view.setModel(json, "JSON"); //Set json model and name it JSON      
        json.setProperty("/assessmentFeed", results); //Push results into your json model with path /assessmentFeed    
       } 
      }); 

ビュー:それは私のサービスの最初の呼び出しを破るようにバインディングのパスは、このパスを変更JSON>/assessmentFeed

<layout:content> 
    <m:FeedInput post="onFeedPost" class="sapUiSmallMarginTopBottom"/> 
    <m:List id="feedList" showSeparators="Inner" items="{path: 'JSON>/assessmentFeed', sorter: {path: 'DATE', descending: true}}"> 
     <m:FeedListItem sender="{JSON>MEMBERID}" timestamp="{JSON>DATE}" text="{JSON>COMMENT}" convertLinksToAnchorTags="All"/> 
    </m:List> 
</layout:content> 
+0

あるらしいです。どのように私はそのギャップを埋めるだろうか?私はコントローラーのinit関数でこれを正確に行うことができますが、バックエンドサービスとの通信を壊さないより良い方法はありませんか? –

+0

私が作った編集を見ていただけますか? –

+0

"JSON> DATE"のような属性でモデル名を忘れました – alexP

関連する問題