【问题标题】:UI5 bind new data to model from controllerUI5 将新数据从控制器绑定到模型
【发布时间】:2017-12-07 23:54:15
【问题描述】:

我正在尝试用我手动完成的用于过滤自己的数组替换模型中的数据。我从 model.read() 获得这些数据。问题是在 ui5 中更新模型中数据的记录方法都没有工作,甚至似乎都没有响应被调用。我正在使用 odata v2,但所有这些技术都被记录为适用于 v2 模型:https://openui5.hana.ondemand.com/docs/topics/6c47b2b39db9404582994070ec3d57a2.html

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>

调用上述所有函数后,我没有收到任何错误,但没有明显的效果。

这是来自模型的 aBindings 数组,显示assessmentFeed 位于模型与 chrome 调试器的绑定中。

【问题讨论】:

    标签: javascript json xml odata sapui5


    【解决方案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&gt;/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>
    

    【讨论】:

    • 更改此路径似乎会中断对我的服务的初始调用。我将如何弥合这一差距?我可以在控制器 init 函数中执行此操作,但没有更好的方法不会中断与后端服务的通信吗?
    • 我忘记了“JSON>DATE”等属性中的型号名称
    • 我不明白你的这行代码:'view.setModel(json, "/assessmentFeed");' setModel 将模型绑定到视图并为其命名。但是 setModel 中的“/assessmentFeed”是什么?阅读后,您的模型自动具有实体评估Feed。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 2012-06-30
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    相关资源
    最近更新 更多