- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用dojo
填充选择框。我的 Spring Controller 返回一个 string
的 arraylist
,我想将所有字符串放入我的选择框中。
var currencyStore = new RequestMemory({
target: "getCurrency"
});
var os = new ObjectStore({ objectStore: currencyStore });
var currencyCombo = new Select({
store: os
}, "currency").startup();
但是上面的代码选择框是空的。我做错了什么?
最佳答案
dojo/Store
和dijit/form/Select
首先我要声明的是,我对 Spring 没有真正的经验,所以我将放弃你的说法,即你有一个 ArrayList
的String
s 并且您希望它们成为 dijit/form/Select
中的选项。如果您不想使用 dijit 小部件或者您想使用常规 <select>
标签没有 dojo 支持,那么您正在处理另一个解决方案。
话虽这么说,您可以使用我在上面的评论中链接的示例:A Select Fed By A Store为了更轻松地完成将您的数据集放入 <select>
并能够利用小部件的其他优点。
require([
"dijit/form/Select",
"dojo/data/ObjectStore",
"dojo/store/Memory",
"dojo/_base/array",
"dojo/dom",
"dojo/html",
"dojo/domReady!"
], function(
Select,
ObjectStore,
Memory,
array,
dom,
html
) {
"use strict";
/*
We used the domReady! plugin so this code runs
after the DOM has finished loading
*/
// Predefine
var strings, idStrings, store, objectStore, select;
/*
Strings is going to be the "arrayList of Strings" that you
mention that you receive from your spring controller
*/
strings = [
"hello",
"world",
"foo",
"bar"
];
/*
We are going to map your String array so that it has an
"id" property and a "label" property which will get used
by the Store and the Select
*/
idStrings = array.map(strings, function(str, index) {
return {
id: index,
label: str
};
});
// Make a Memory Store
store = new Memory({
data: idStrings
});
// Make an ObjectStore from the Memory
objectStore = new ObjectStore({
objectStore: store
});
// Create the Select and set its store to the one we just made
select = new Select({
name: "testSelect",
store: objectStore
}, "testSelect");
// We need to run startup on programatically created widgets
select.startup();
// Add change listener for funzies
select.on("change", function() {
// Get the label from the store by the value of this Select
var label = store.get(this.get("value")).label;
// Set the innerHTML of our logger
html.set(dom.byId("logger"), label);
});
});
<!-- Include the dijit claro theme -->
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dijit/themes/claro/claro.css">
<!-- Set our dojoConfig -->
<script>
var dojoConfig = {
parseOnLoad: false,
isDebug: true,
async: 1
};
</script>
<!-- Include the dojo 1.10.4 CDN -->
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<body class="claro">
<main>
<!-- This Select is going to be replaced by our widget -->
<select id="testSelect"></select>
<!-- We're going to put output in this div -->
<div role="log" id="logger"></div>
</main>
</body>
此外,如果您不想使用 dijit/form/Select
您可以将选项插入 <select>
您自己可以使用 native JavaScript 方法,如 document.createElement("option");
然后手动调整属性,但由于您已经使用带宽来加载 dojo,您不妨通过使用其 DOM 操作方法(例如 dojo/domConstruct.create()
)来使事情变得更容易。 .
dijit/form/Select
require([
"dojo/_base/array",
"dojo/dom",
"dojo/dom-construct",
"dojo/domReady!"
], function (
array,
dom,
domConstruct,
) {
"use strict";
var strings, select;
// We have our strings
strings = [
"hello",
"world",
"foo",
"bar"
];
// Get our select
select = dom.byId("testSelect");
// Iterate each string and put it into an option under our select
array.forEach(strings, function (str, index) {
domConstruct.create("option", {
innerHTML: str,
value: index
}, select);
});
});
<小时/>
您可能不需要使用 dojo/_base/array
。我这样做是出于支持旧浏览器的习惯,而且我们已经在使用 dojo。另外,您可能对模块的去向有自己的设置,并且希望使用某种构建层而不是使用 CDN,因此您应该重构它,以便它不仅仅是像我在本示例中所做的一些内联脚本。
关于javascript - 如何使用 ajax 调用填充选择框,该调用使用 dojo 返回字符串列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32952214/
padding:initial 比 padding:0 有什么优势吗?示例: textarea { padding: 0; } Hello, world! 最佳答案 它们的意思是一
我尝试通过按钮填充 JList,然后在先前填充的 Jlist 上使用 DoubleClick 填充 JTextField。 代码: private void extractUsedVariables
我正在尝试做 var width = ($(this).width() + $(this).css('padding-left') + $(this).css('padding-right' ));
我在导航中添加了悬停效果,遗憾的是悬停也影响了上面的文字。如何在不影响文本位置的情况下向导航添加悬停? 可悲的是,我找不到解决这个问题的方法。 HTML 模板:http://projects.help
我是 F# 初学者,下面代码中的 %-5s 和 %5s 有什么作用?我认为它提供了空间填充,但我不确定它是如何填充的? printfn "%-5s %5s" "a" "b" 当我尝试 prin
我需要选择带狗的用户(带 type 等于“狗”的宠物) var User = Waterline.Collection.extend({ identity: 'user', attribute
我一直在尝试让 Excel 在一组列上应用公式,然后将模式扩展到整个行集。 这导致了以下代码: For i = 0 To avgsheetNames.Count - 1 If Contains(CSt
随着 Flutter 2.0 的发布,FlatButton已被替换为 TextButton . 因此,填充属性不再直接可用,而是作为 ButtonStyle属性(property)。 我的问题是,我该
这似乎是一个简单的问题,但我已经尝试了一个小时,似乎无法弄清楚。 我要做的就是用 Canvas 填充 MainWindow。我找不到任何允许这样做的属性,我能想到的唯一方法是设置 Canvas.Wid
这是a website具有移动 View 。 网站宽度为 640 像素,但 iPhone 以 678 像素渲染文档。在 Android 中看起来很棒。 我添加了视口(viewport)元: 主体 C
我正在使用 GridBagLayout到(当前)显示两行。我知道这种布局对于这项任务来说太过分了,但我正在努力学习如何使用它。问题是我已将两个面板添加到两个单独的行中,并且内容周围存在巨大差距(请参见
我有以下代码已传递给我并创建多边形: var map; function initialize() { var myLatlng = new google.maps.LatLng(-36.4
我在 Jpanel 中有一些项目,然后将其推到顶部并用作基本搜索引擎的工具栏。我遇到一个问题,因为没有足够的空间,所以我的最后一个组合框没有显示。但是,左侧有很多空白空间,我需要移动所有内容来填充 J
我创建了带有阈值的二进制图像。如下图所示如何改变白色形状的颜色以使其可索引? 到目前为止,这是我的代码: void threshold() { cv::Mat src_8uc3_img = c
我有一个 JTable,我想知道是否有更好的方法来填充它,这是我的代码: //Metodo para llenar un jtable con datos de la base public stat
我想要做的是裁剪一个卷以删除所有不相关的数据。例如,假设我有一个 100x100x100 的体积,其中填充了 0,但其中的 50x50x50 体积则填充了 1。如何从原始体积中获得裁剪后的 50x50
因此,我正在创建一种对一组数字进行洗牌的方法,其想法是创建这些数字的总体。因此,我创建了一个循环,对数字进行洗牌,然后将其添加到数组列表中,但是经过一些调试语句后,我发现它确实对数字进行洗牌,但只将最
假设我有这两个类: public class A where T : IEntityWithID, new() { private static EntityInfo entityInfo =
我正在尝试添加用户输入的两个大整数作为字符串。当两个输入字符串的长度不同时,我尝试用零填充较短的数字,但它不起作用。因此,如果我输入 456 和 7,它会给出 3,前面有一些随机字符。感谢您的任何建议
这是我将内容打印到表格 View 的代码 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: Index
我是一名优秀的程序员,十分优秀!