Javascript API issue

Javascript API issue

本文关键字:issue API Javascript      更新时间:2023-09-26

我目前有这个

<option ng-id="1186384773090640435" value="1186384956868264500">Product Name</option>

我需要同时获取 id 和值并将其插入到下面:

moltin.Cart.Insert($scope.productId, qty, { "1186384773090640435" : { "1186384956868264500" : 1} }, function (cart) {

我该怎么做?

我目前正在做这样的事情,但它不起作用:

modi = $(this).attr('ng-id');
vari = $(this).attr('value');
moltin.Cart.Insert($scope.productId, qty, { modi : { vari : 1} }, function (cart) {

我可以假设它,因为值不是字符串或对象。不太确定。

创建对象文本时,不能将变量值用作对象属性名称(除非编写ES20015)。您将需要类似以下内容:

modi = $(this).attr('ng-id');
vari = $(this).attr('value');
((insert = {})[modi] = {})[vari] = 1
moltin.Cart.Insert ($scope.productId, qty, insert, function ( ...

解释:

在第三行中,我们首先将一个名为 insert 的变量设置为空对象 (insert = {}) 。在该对象中,我们添加一个属性,其名称是变量 modi 的值,其值为空对象:( ...[modi] = {}) 。该空对象又被赋予一个属性,其名称为 vari 的值,其值为 1。整个表达式返回值 1,这解释了为什么我们需要设置一个变量名称来引用第一个创建的对象。

Javascript如此包容;-)

或(在三行中只有一个变量):

let insert = {};
(insert[$(this).attr('ng-id')] = {})[$(this).attr('value')] = 1
moltin.Cart.Insert ($scope.productId, qty, insert, function ( ...

在ES2015(ES6)中,您可以直接将其编码为:

moltin.Cart.Insert ($scope.productId, qty, {[modi]: {[vari]: 1}}, function ( ...