我想更新一个填充了OData svc的表。我正在使用这种方法:
oModel.update("/Products(999)", oData, {
success: mySuccessHandler,
error: myErrorHandler
});
我在变量中选择了索引,我需要传递该变量。问题是Products(999)
- 这与硬编码行有关,但如何用变量替换?
答案 0 :(得分:2)
通过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会在output string中添加字符"l"
,并与 OData规范对齐:"999"
→"999l"
encodeURIComponent
api 。 例如: ProductID='sp ace'
→ProductID='sp%20ace'
由于createKey
依赖于服务元数据中的信息,因此应在加载$metadata
后执行API。为此,可以使用promise based API metadataLoaded
。
myODataModel.metadataLoaded().then(/*createKey*/);
答案 1 :(得分:1)
使用javascript连接运算符+
将变量的值合并到url字符串中:
var sIndex = "123";
oModel.update("/Products(" + sIndex + ")", oData, {success: mySuccessHandler, error: myErrorHandler});
顺便说一句:数字类型自动转换成字符串。