2

我正在尝试绑定一个onChange事件FilteringSelect来填充另一个FilteringSelect

// View
dojo.addOnLoad(function () {
    dojo.connect(dijit.byId('filterselect1'), 'onChange', function () {
        dijit.byId('filterselect2').store = new dojo.data.ItemFileReadStore(
            { url: "/test/autocomplete/id/" + dijit.byId("filterselect1").value }
        );
    });
});

JSON 是根据我可以使用autoCompleteDojo帮助程序从 Zend 动作控制器正确判断的内容生成的。

// Action Controller
public function autocompleteAction()
{
    $id = $this->getRequest()->getParam('id');
    $select = $this->_table->select()
                           ->from($this->_table, array('id','description'))
                           ->where('id=?',$id);

    $data = new Zend_Dojo_Data('id', $this->_table->fetchAll($select)->toArray(), 'description');

    $this->_helper->autoCompleteDojo($data);
}

我正确地从远程数据存储接收 JSON,但它没有填充第二个FilteringSelect. 我还需要做些什么来将 JSON 推送到FilteringSelect?

4

2 回答 2

3

我不敢相信这是导致问题的原因,但整个问题归结为这样一个事实,即 dojo ItemFileReadStore要求JSON 的标签属性为“名称”。最后,这就是将它们连接在一起所需的全部内容。

dojo.addOnLoad(function () {

    dijit.byId('filtering_select_2').store = new dojo.data.ItemFileReadStore({url: '/site/url'});

    dojo.connect(dijit.byId('filtering_select_1'), 'onChange', function (val) {
        dijit.byId('filtering_select_2').query.property_1 = val || "*";
    });
});

更新:Zend 形式中的属性自 ZF 1.8.4 起已修复

于 2009-05-21T00:08:58.943 回答
1

在事件中尝试 console.log() 以查看它是否已启动。更改商店应该可以工作,但是对于网格等其他小部件,您还必须调用刷新方法。

于 2009-04-16T12:24:23.297 回答