【问题标题】:Setting dijit NumberSpinner value programmatically以编程方式设置 dijit NumberSpinner 值
【发布时间】:2017-03-21 21:38:38
【问题描述】:

我想以编程方式更改 dijit/form/NumberSpinner 值。如何使用 'data-dojo-attach-point' 或 id 来实现这一点?

下面的代码更新了 Number Spinner 文本,但它给了我

“未捕获的 TypeError:c.advice.apply 不是函数”错误。

如何以编程方式正确更改值?

this.typeResidential.set('value', 30);

【问题讨论】:

  • @bRIMOs 非常感谢您的编辑。

标签: javascript dojo set dijit.form


【解决方案1】:

在 dojo 中,您可以通过编程方式(如 bRIMO 的回答正确显示)或声明方式设置小部件的属性。

以编程方式使用时,请确保 this 对您的小部件具有正确的范围。

this.typeResidential.set('value', 30);

或者,下面是一个声明性语法的示例,它包括在您的 HTML 标记中添加一个名为 value 的属性。

您可以通过两种方式获得相同的结果,这实际上取决于您的应用程序设计。

require(["dojo/parser", "dijit/form/NumberSpinner"]);
<script>
var dojoConfig = {
        parseOnLoad: true,
        isDebug: true,
    };
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.11.3/dojo/dojo.js"></script>
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.8.3/dijit/themes/claro/claro.css" rel="stylesheet"/>
<div class="claro">
    <input data-dojo-type="dijit/form/NumberSpinner"
        id="integerspinner2"
        value="1000"
        data-dojo-props="smallDelta:10, constraints:{min:9,max:1550,places:0}"
        name="someNumber"
        />
</div>

【讨论】:

  • 我的荣幸 :)。 ++
  • @GibboK 看来我设置的值是正确的。我对“dijit/form/Horizo​​ntalSlider”使用了相同的方法,并且工作没有任何问题。我想知道为什么当我尝试设置“dijit/form/NumberSpinner”的值时会收到错误消息。我确保“this”在范围内。
  • @Mackey 请发布一个代码的工作示例,您可以在其中重现错误,我们会看看 :) 不幸的是,如果没有看到代码,我们无法真正调试与 c.advice.apply 相关的错误
  • @GibboK 我发现错误来自与同一“数据道场连接点”相关的另一个函数。非常感谢!!
  • @Mackey 欢迎您。请考虑使用左侧的 TICK/UP 图标接受或投票赞成答案。感谢和愉快的编码:)
【解决方案2】:

这取决于您编写应用程序的方式, 如果您正在使用 data-dojo-attach-point 编写小部件并访问 this.your-attach-name 或使用 id 并访问小部件 throw registry

下面的示例使用id 并使用registry.by("widgetId").set("value",val); 设置此小部件的dijit/registry 的spiiner 的值

现场示例:https://jsfiddle.net/gibbok/9rLtzm1u/

require(["dijit/registry","dojo/ready","dojo/parser"],
		function(registry,ready,parser){
        parser.parse();
    		ready(function(){
        	registry.byId("typeResidential").set("value",213);
        });    
    }
);
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.11.3/dojo/dojo.js"></script>
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.8.3/dijit/themes/claro/claro.css" rel="stylesheet"/>
<div class="claro">
  <div data-dojo-type="dijit/form/NumberSpinner" id="typeResidential"></div>
</div>

【讨论】:

  • 由于“data-dojo-attach-point”对我不起作用,我尝试了您的建议“注册表”。但是,我仍然遇到同样的错误。
  • 能否请您发布您正在处理的代码以获得更好的可见性
  • 错误来自另一个共享相同“data-dojo-attach-point”的函数。不过,我学会了使用“注册表”来设置 dijit 小部件中的值。非常感谢!
  • 太棒了 :) ,如果这有助于将答案标记为已解决(留下答案)(就像在这张图片中 =>image resolve post)谢谢你跨度>
猜你喜欢
  • 1970-01-01
  • 2011-02-14
  • 2017-05-13
  • 1970-01-01
  • 2018-07-25
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多