我想更新一个填充OData svc的表。我正在使用这种方法:
oModel.update("/Products(999)", oData, {
success: mySuccessHandler,
error: myErrorHandler
});
我在变量中选择了索引,我需要传递该变量。问题是Products(999)
- 这是使用硬编码行但如何用变量替换?
通过ODataModel中的API createKey
动态创建路径:
const path = myODataModel.createKey("/Products", {
ProductID: 999, // your dynamic key value
AnotherKeyProperty: "...",
});
myODataModel.update(path /*,...*/);
与手动连接路径的字符串相比,createKey
具有以下优点:
ODataUtils.formatValue
)。例如:如果ProductID
的类型为Edm.Int64
,则UI5在"l"
中附加字符output string,与OData规范对齐:"999"
→"999l"
encodeURIComponent
api)。例如:ProductID='sp ace'
→ProductID='sp%20ace'
由于createKey
依赖于服务元数据中的信息,因此应在加载$metadata
之后执行API。为此,可以使用promise based API metadataLoaded
。
myODataModel.metadataLoaded().then(/*createKey*/);
使用javascript连接运算符+
将变量的值合并到url字符串中:
var sIndex = "123";
oModel.update("/Products(" + sIndex + ")", oData, {success: mySuccessHandler, error: myErrorHandler});
顺便说一句:数字类型自动转换为字符串。