- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
SHOPIFY,我必须说,你的 sdk 支持不足。
我有点菜鸟,但我对 js 足够了解。但这还不够,shopify but sdk support page 告诉我使用像
这样的东西var shopClient = ShopifyBuy.buildClient({
apiKey: 'private',
myShopifyDomain: 'my-leisure',
appId: '6'
});
创建我的 shopClient,就是这样,我不是特别知道我构建了什么,我不知道它是否只是一个具有该数组的对象或更多已构建。
它告诉我使用类似的东西
var cart;
shopClient.createCart().then(function (newCart) {
cart = newCart;
// do something with updated cart
});
所以我知道这使得购物车,虚拟购物车,对前端没有任何帮助和
new CartModel();
创建一个新的购物车模型,这是它的构造函数。但它是什么,我也不知道,它是否包括侧栏购物车 ui 的 css?
然后它告诉我使用
var product;
shopClient.fetchProduct(6829802497)
.then(function (product) {
product = product;
});
..获取我想要的产品。但我什么时候这样做,我认为它应该在点击我的自定义购买按钮时完成。
所以我创建了一个 ID 为 mg-240 的按钮,并监听点击以生成产品。
$(document).ready(function() {
document.getElementById('mg-240').onclick = function() {
var product;
shopClient.fetchProduct(6829802497)
.then(function (product) {
product = product;
});
var variant = product.variants[0];
var checkoutURL;
checkoutURL = variant.checkoutUrl(1);
cart.addVariants({variant: product.selectedVariant, quantity: 1}).then(function (cart) {
});
updateModel();
}
});
我的代码笔有一些改进,比如在函数中运行客户端创建和初始购物车创建,然后在 document.ready() 函数中运行点击监听,
http://codepen.io/lopupen/pen/PzKgQK?editors=1111
我这样做是为了设计我自己的网站,并且可以将 ID 应用于按钮以指示是否应将产品添加到购物车,或者直接导致结帐。也没有明确指示如何在 sdk 支持 repo 中切换购物车。
如果有人比我聪明得多来指导我关于如何使用这些 angular js node.js promises 和对象我缺少什么。
干杯,谢谢,顺便说一句,首席执行官是个智障
我收到此控制台错误,提示我的 url 已被弃用,但它是正确的域...您不包括 .myshopify.com。你?只是域名?
https://gyazo.com/4959b10465d24e2954d53a7ce0b10ee5
另外需要注意的是,有两种不同的指示方式来启动客户端,如果您没有意识到这一点,那么遵循来自两个不同页面的说明可能会发生冲突。
看看这个页面:http://shopify.github.io/js-buy-sdk/#creating-a-shop-client
它告诉你
var shopClient = ShopifyBuy.buildClient({
apiKey: 'your-api-key',
myShopifyDomain: 'your-myshopify-domain',
appId: '6'
});
但在这里:http://shopify.github.io/js-buy-sdk/examples/
$(function() {
var client = ShopifyBuy.buildClient({
apiKey: 'your-api-key',
myShopifyDomain: 'your-myshopify-domain',
appId: '6'
});
});
它只是告诉你使用客户端,这可能没问题,但在他们使用客户端的同一页面上。等等。他们在示例中也使用客户端,
client.fetchProduct('your-product-id').then(function(product) {
var html =
"<img class='product__image' src='" + product.selectedVariantImage.src + "' >" +
"<h2 class='product__title'>" + product.title + "</h2>" +
"<a class='product__buy' href='" +
product.selectedVariant.checkoutUrl(1) +
"'>Buy Now!</a>";
$('#product-1').html(html);
});
但是在另一个页面上,他们也在示例中使用了 shopClient,所以如果您混合使用示例代码,这会有点烦人,也许人们并不知道。我认为 shopify 的首席执行官比这个难以使用的东西更像是一个完美主义者。似乎在大多数情况下客户端应该定义为shopClient,但是在示例文档中有一个巨大的js文件,其中单独使用了客户端。哈哈
https://github.com/Shopify/js-buy-sdk/blob/master/examples/cart/index.js
最佳答案
这里有很多问题,但我会尝试逐一分解。
关于从 ShopifyBuy.buildClient(...)
返回的内容, 它返回 ShopClient
的一个实例. ShopClient
具有对 Shopify 进行必要调用的实例方法。
购物车是在您调用 shopClient.createCart()
时创建的,它返回一个 Promise解析为 CartModel
的一个实例.无需直接调用 CartModel 构造函数。
JS Buy SDK 纯粹是一个 JavaScript 库。它不包含开箱即用的 UI,但如果您正在寻找一些与之一起使用的 UI,则有一个 example of using a cart。在 Github 存储库中,它应该可以帮助您启动和运行。
您很可能希望在用户点击按钮之前获取产品,以便加载产品并且您的页面可以快速交互。
截至version 0.2.0 (昨天发布),myShopifyDomain
已被弃用,取而代之的是 domain
。因此,它现在正在寻找包含您域的完整路径的字符串,例如“my-store.myshopify.com”(而不是它过去期望的只是“my-store”)。我们目前正在更新整个站点的文档。
关于命名的要点。它们都是变量,所以它们的名字与它们的作用无关,但即使在不同的地方提到它们,最好将它们写成相同的。我们会看看如何修复它(或者随时自己 submit a Pull Request!)
我不太清楚您是要将产品添加到购物车还是仅使用一种产品结帐。如果您想将它添加到购物车,应该这样做(看起来您有可用的 jQuery):
$(document).ready(function() {
var shopClient = ShopifyBuy.buildClient({
apiKey: 'private',
myShopifyDomain: 'my-leisure',
appId: '6'
});
var cartPromise = shopClient.createCart();
var productPromise = shopClient.fetchProduct(6829802497);
$('#mg-240').on('click', function() {
Promise.all([cartPromise, productPromise]).then(function(promises) {
var cart = promises[0];
var product = promises[1];
cart.addVariants({variant: product.selectedVariant, quantity: 1});
// do stuff
});
});
});
如果您只想使用产品中的第一个变体结帐,这是一个更简单的版本:
$(document).ready(function() {
var shopClient = ShopifyBuy.buildClient({
apiKey: 'private',
myShopifyDomain: 'my-leisure',
appId: '6'
});
var productPromise = shopClient.fetchProduct(6829802497);
$('#mg-240').on('click', function() {
productPromise.then(function(product) {
window.location = product.selectedVariant.checkoutUrl(1);
});
});
});
如果 JavaScript Promises 不熟悉,我建议阅读 MDN docs或 this introduction to them .
希望这对您有所帮助!
关于javascript - Shopify Buy SDK getElementById().onClick 功能无法正确获取产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38262625/
这里有这样的问题,但我尝试了解决方案,但在我的情况下这不起作用。我有一个通过单击打开的表单,然后必须通过单击此表单内的 x 将其关闭。 This variant不适合,因为 cookie 在关闭表单后
我有以下代码: function sdefaults() { alert("test"); } var btnpos, sbtn; btnpos = document.getElementsBy
我正在学习 javascript 和 php。我创建了一个联系表单,我希望按下提交按钮时可以完成两件事: 将数据提交给我(这部分正在运行) 阅读我的 onclick 函数(这部分不起作用) 我正在
我的页面有多个div元素,有显示切换功能。 onclick = "document.getElementById('light').style.display='block';document.ge
为什么不同? document.getElementById('click').onclick = a.replaceChild(c,b) --- 在我不点击按钮的情况下替换元素 但 onclick=
我以为在javascript中绑定(bind)点击事件是通过node.onclick来完成的,Chrome/Firefox似乎也同意我的看法,但我看到它写成.onClick here 3个人4次,所以
基本上,我想创建一个侧边栏,其中会有很多联系人。每个联系人都会出现在一个列表中。列表中有两个 onclick 函数。列表中两个 onclick 函数是:第一次点击-点击列表后它应该打开另一个侧边栏(我
我是 Javascript 的新手,尤其是在 JSON 和 Jquery 上。我已经成功实现了 FullCalendar 的月 View ,但是无论如何要根据用户单击月 View 的日期来显示或弹出日
给定一些简单的 HTML,例如,其中一个元素具有 onclick 函数,并且它的子元素也具有 onclick 函数: 正确的方法是什么,以便当用户单击子元素时,仅执行子元素的 oncli
我有一个功能,当您单击一个按钮时,TinyMCE 框内的选定文本被包装在 span 中标签。 这是这样做的: var apolo = '' + sel + ''; tinyMCE.activeEdit
我尝试使用 JavaScript 将 onclick 事件替换为其他 onclick 事件: 旧 onClick 事件: $('#myButton').click(function(){ a
我正在尝试删除一个函数中的事件监听器,该函数与 onclick 调用的函数相同。 下面的例子说明了我的问题。我尝试使用这种构造的原因是将函数传递给 View 对象,以便它可以将其作为 onclick
这是一个相当简单的可访问性问题。 假设我们有一个切换链接/按钮,单击该链接/按钮即可切换移动菜单。对于这样的按钮,哪种格式更易于访问? 我们总共有 4 个选项,用 分隔 button标签与 a标签,
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: How to make onclick automatically through onload function
我需要能够改变一个 id 的 onclick 事件,这样一旦它被点击,一旦它执行一个改变 onclick 事件的函数 这是我的代码:Javascript: function showSearchBar
有谁知道如何将 onClick 分配给执行一个操作的对象,然后当用户点击同一对象时,该操作被反转? $('#image').click(function() { $('#foo').css({
我重写了 onClick(View) 方法,以便在单击时 View 大小会发生变化。View 是一个显示浏览器网页的 webView。我需要点击会改变大小,而且浏览器会响应(转到被点击的链接)。在目前
我有这个 HTML 代码: APPLY JS: $('#changeType').click(function(){ $('#discountCode').attr('type','pass
我想用 onclick 创建一个函数,如果我按下 div 就会显示内容。如果我点击该内容,它会给我“开始”表单。 让我向您展示代码: HTML: click Javascript: var div =
我编写了一个函数,用于使用超链接的占位符打开/关闭 div。 Open 然后 onclick 事件打开 div。 我有这个onclick来关闭它: Close 我想要做的是为在两个 onclick 事
我是一名优秀的程序员,十分优秀!