0

我正在尝试将 dijit.form.Select 的值链接到 ListController。我让它与 FilteringSelects 和 TextBoxes 一起使用,但它不适用于常规 Selects。

我正在为记录列表编写编辑器。我正在使用 ListController 来表示记录列表,并且我希望我的所有小部件都能够编辑“当前记录”。因此,每个小部件都绑定到 ListController 中的不同属性。然后我将能够在不同的记录之间切换,但使用相同的小部件来编辑它们。

控制器当然知道哪个记录是当前记录,并且一些小部件可以工作。因此,当我使用 TextBox 小部件编辑 Barcode 字段时,ListController 会在正确的记录上设置值。

但是,我无法将 Select 小部件的值与 ListController 中的预期属性挂钩。

我尝试将值: mvc.at(controller, 'field') 放入构造函数中,并在调用后直接设置它,但没有骰子。有任何想法吗?

require( [ 'dijit/form/Select', ], function( Select ) {
    var testSelect = new Select( {
        value: mvc.at( controller, 'field' ), // controller is a ListController
        store: store,
        searchAttr: "description", 
        labelAttr:  "description"
    }, 'TestSelect' );
} );


require( [ 'dijit/form/Select', ], function( Select ) {
    var testSelect = new Select( {
        store: store,
        searchAttr: "description", 
        labelAttr:  "description"
    }, 'TestSelect' );
    testSelect.set( 'value', mvc.at( controller, 'field' ) );
} );

mvc.at() 实际上是如何工作的?它似乎没有将 value 属性设置为 mvc.at 值,即使在可以工作的小部件上也是如此。小部件代码内部似乎有一些眨眼和轻推。关于 _refs 的东西?

4

1 回答 1

2

dijit/form/Select 值需要单个值,但 ListController 包含一个数组,因此您不能直接将 ListController 中的字段绑定到 Select 的值。您可以将 Select 放在 dojox/mvc/Group 中,它具有以下内容: data-dojo-props="target: at(controller,'cursor')"

然后您将使用以下内容设置您的选择: value: mvc.at( 'rel:', 'field' ),

并且无论何时更改控制器上的光标或光标索引,都会更新选择。

如果您想直接从控制器设置值,我认为您必须执行以下操作: value: mvc.at(controller.model[0], 'field'),

于 2013-05-03T16:48:59.163 回答