2

好吧,所以我最近发现了如何使用exports.BaseController 在Alloy 控制器中继承和覆盖(如有必要)函数。所以现在我有这个视图页面,其中包含一个动态生成行的表。这是下面的 xml 视图文件和关联的控制器文件(其中的一部分):

父视图.xml

<Alloy>
<Window id="currentWin">
    <LeftNavButton>
        <Button  id="backBtn" onClick="goBack"/>
    </LeftNavButton>
    <TitleControl>
        <Label id="titleLabel"/>
    </TitleControl>
    <TableView id="menuTable"/>
</Window>
</Alloy>

父视图.js

var dataArray = [];

var generateRows = function(){
//code to create a number of TableViewRow instances and push them into dataArray

};

exports.generateRows = generateRows;
generateRows();   //problem area

$.menuTable.setData(dataArray);

现在这是我用来继承上述 genrateRows 函数并覆盖其功能的控制器:

childView.js

exports.baseController = "parentView";

var generateMyRows = function() {
//code to create a number of TableViewRow instances and push them into dataArray
};
exports.generateRows = generateMyRows;

我对在childView.js中使用exports.baseController进行覆盖的理解是,当generateRows()调用(问题区域)时,调用generateMyRows()childView.js的方法。然而,这种情况并非如此。tableview 仍然被generateRows()parentView.js 的函数填充。请帮帮我,我已经为此烦恼了好几个小时!

4

1 回答 1

1

有点晚了,但如果你调用 $.generateRows() 它应该可以正常工作。

于 2014-07-04T17:49:23.927 回答