从onChange事件填充FilteringSelect数据存储区

时间:2009-04-15 20:22:43

标签: javascript zend-framework dojo

我正在尝试绑定一个onChange的{​​{1}}事件来填充另一个FilteringSelect

FilteringSelect

JSON是根据我使用// 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 } ); }); }); 帮助程序从Zend Action Controller正确判断的内容生成的。

autoCompleteDojo

我正确地从远程数据存储区接收JSON,但它没有填充第二个// 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

2 个答案:

答案 0 :(得分:3)

我无法相信这会导致问题,但整个问题归结为这样一个事实:似乎dojo ItemFileReadStore 要求 JSON的label属性为“name”。最后,这就是将它们连接在一起所需的全部内容。

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

答案 1 :(得分:1)

在事件中尝试console.log()以查看它是否已启动。更改商店应该可以使用,但是对于像网格这样的其他小部件,您还需要调用刷新方法。