SAP Spartacus注入自定义的CurrentProductService
时间:2022-07-25
本文章向大家介绍SAP Spartacus注入自定义的CurrentProductService,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
新建一个MyCurrentProductService,返回一个硬编码的产品主数据:
完整源代码如下:
import { Product, ProductScope } from '@spartacus/core';
import { Observable, of } from 'rxjs';
const PRODUCT: Product = {
code: '300938',
name: 'Jerry hard code value',
summary: 'Jerry hard code value.',
price: {
formattedValue: '$10000',
currencyIso: 'USD',
// "priceType": "BUY",
value: 10000
},
images: {
PRIMARY: {
zoom: {
altText: 'Photosmart E317 Digital Camera',
format: 'zoom',
// : "PRIMARY",
url: 'https://spartacus-dev0.eastus.cloudapp.azure.com:9002/medias/?context=bWFzdGVyfGltYWdlc3wxMzkzNnxpbWFnZS9qcGVnfGltYWdlcy9oMjYvaDdhLzg3OTcyNTE0NjkzNDIuanBnfGU3N2FlYWQ1YmQ1ODhjZjZiNTFjNDg3NDdjNGRkNjM5NGQzMjZmZWVmNjc3ZWQwMjgzY2MyNDJlNzYyNTczM2Q'
},
product: {
altText: 'Photosmart E317 Digital Camera',
format: 'product',
// "imageType": "PRIMARY",
url: 'https://spartacus-dev0.eastus.cloudapp.azure.com:9002/medias/?context=bWFzdGVyfGltYWdlc3w3MDg1fGltYWdlL2pwZWd8aW1hZ2VzL2g2Ni9oOWQvODc5NzI3Nzc0OTI3OC5qcGd8NzdjOTNiMThkODQ4NTM4NmQ2NjMxMGMwYmMyOTIwODIwMzI4NTgyMGUxNDc4Y2I0OTRkOGViODNlNDZiYTJhNw'
},
thumbnail: {
altText: 'Photosmart E317 Digital Camera',
format: 'thumbnail',
// "imageType": "PRIMARY",
url: 'https://spartacus-dev0.eastus.cloudapp.azure.com:9002/medias/?context=bWFzdGVyfGltYWdlc3wyMDYxfGltYWdlL2pwZWd8aW1hZ2VzL2g3ZS9oZmEvODc5NzMwNDA5NDc1MC5qcGd8OGZjMTNjM2JmMGY0MmYyMWY3OGM5YjQ4YjAyNzM4NjkxYjUyMmQzMDBhMmMzMjMwZThmMjI4OWMwZjg1NmYzMw'
},
cartIcon: {
altText: 'Photosmart E317 Digital Camera',
format: 'cartIcon',
// "imageType": "PRIMARY",
url: 'https://spartacus-dev0.eastus.cloudapp.azure.com:9002/medias/?context=bWFzdGVyfGltYWdlc3wxNDQwfGltYWdlL2pwZWd8aW1hZ2VzL2gxNS9oZmYvODc5NzMzMDQ0MDIyMi5qcGd8ODU0ZWQwMjY5OWE5OTBlZjc0ZGFhZTU4ZWYwNDk4ODFmZmM1ZTg2ZjIxOWFiZTBkZmU0NDBmMDBiNTYyMzdlYg'
}
},
GALLERY: []
},
nameHtml: 'Photosmart E317 Digital Camera',
//nameForUrl: 'photosmart-e317-digital-camera',
baseOptions: [],
purchasable: true,
averageRating: 4.5,
stock: {
/*
'isValueRounded': false,
'stockLevel': 314,
'stockLevelStatus': 'inStock'*/
},
description: 'Get point and shoot simplicity plus crisp, true-to-life photos with this stylish and easy-to-use camera.<br/><br/>Get close in with 4x digital zoom, review via the clear 3.8 cm LCD then print great 10 × 15 cm photos and enlargements up to poster size.',
availableForPickup: true,
url: '/electronics-spa/products/300938',
numberOfReviews: 22,
manufacturer: 'HP',
categories: [
{
code: '576',
name: 'Digital Compacts',
url: '/Open-Catalogue/Cameras/Digital-Cameras/Digital-Compacts/c/576'
},
{
code: 'brand_1',
name: 'HP',
url: '/Brands/HP/c/brand_1'
}
],
priceRange: {}//,
//configurable: false
};
export class MyCurrentProductService {
getProduct(scopes?: (ProductScope | string)[] | ProductScope | string): Observable<Product> {
console.log('My product service is called!');
return of(PRODUCT);
}
}
在app module里,用MyCurrentProductService覆盖掉SAP Spartacus标准的CurrentProductService:
运行时测试,我任意点开一个产品主数据的明细页面,都会调用我自己的CurrentProductService,显示硬编码的数据:
- SQL注入攻防入门详解
- jQuery插件编写步骤详解
- 深入探秘Neutron API
- 碎片化 | 第七阶段-10-session共享解决方案-视频
- CSS选择器是如何确定优先级的?
- JS中控制好this关键字的指向
- 碎片化 | 第四阶段-46-值栈valueStack介绍和原理-视频
- Laravel中运行Gulp任务的利器(一) —— Laravel Elixir简介及入门教程
- 碎片化 | 第四阶段-52-Hibernate特性-视频
- 碎片化 | 第四阶段-53-hibernate持久化session问题解决-视频
- 入门webpack(下)
- 巨头们关注的实时Web:发展与相关技术
- 碎片化 | 第四阶段-54-hibernate-spring整合流程-视频
- OpenDaylight Lithium版本简单应用及流表操作指南
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法