以编程方式设置 dijit NumberSpinner 值

Setting dijit NumberSpinner value programmatically

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

实现此目的

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

"Uncaught TypeError: c.advice.apply is not a function" error.

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

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

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

以下示例使用 id 并使用 registry.by("widgetId").set("value",val);

使用此小部件的 dijit/registry 设置 spinier 的值

实例: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>

在 dojo 中,您可以通过编程方式(如 bRIMOs 答案所示)或以声明方式设置小部件的属性。

以编程方式使用时,请确保 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>