0

我有这样的代码:

  function () {
    var field=$('#bomPartModels').val(); 
    START.bom.addIcons({

        "ABC123-2":  {"name": "", "qty": 4, "image": "images/UK_OO_HR2000_IT.jpg", "incart": 0, "model": []},
        "ABC123-3":  {"name": "Downconverter Mixer", "qty": 16, "image": "images/UK_Universal_Cable_Adaptors_IT.jpg", "incart": 0, "model": []},
      });
  });
});

bomPartModels 是一个 Java bean 对象列表,每个 bean 包含名称、数量图像等。这已从添加到模型的控制器返回

我需要用从 bomPartModels object 读取的动态值替换 START.bom.addIcons 中的静态值。我怎样才能做到这一点?

4

2 回答 2

0

您可以使用 jQuery 扩展函数将默认对象中的值替换为接收到的对象中包含的 on。

http://api.jquery.com/jQuery.extend/

fullobject = $.extend({}, static_object, dynamic_object));
于 2013-11-13T10:38:42.280 回答
0

本质上,您想要做的是在您的 JSP 页面中生成该 JavaScript 对象的正确 JSON 表示,以代替您现在拥有的静态对象文字。所以在 JSP 中,这部分代码看起来像这样:

function () {
    var field=$('#bomPartModels').val(); 
    START.bom.addIcons(
        // code to generate JSON here
    );
});

// code to generate JSON here部分是有趣的地方。有很多方法可以做到这一点,但你不想做的是尝试手动生成它;那只是要求引入错误并最终出错。

就个人而言,每当我需要在 JSP 中生成 JSON 内容时,我都会使用json-taglib。看起来像这样:

START.bom.addIcons(<json:object>
    <c:forEach items="${bomPartModels}" var="bpm">
        <json:object name="${bpm.id}">
            <json:property name="name" value="${bpm.name}"/>
            <json:property name="qty" value="${bpm.qty}"/>
            ... // other properties
        </json:object>
    </c:forEach>
</json:object>);

这样做的缺点是您只能将 JavaScript 代码放在 JSP 中,这样才能正常工作。

于 2013-11-13T14:22:23.653 回答