好吧所以我最近发现了如何使用exports.BaseController在Alloy控制器中继承和覆盖(如果需要)函数。所以现在我有这个视图页面,其中包含一个动态生成行的表。这是下面的xml视图文件和相关的控制器文件(部分):
<Alloy>
<Window id="currentWin">
<LeftNavButton>
<Button id="backBtn" onClick="goBack"/>
</LeftNavButton>
<TitleControl>
<Label id="titleLabel"/>
</TitleControl>
<TableView id="menuTable"/>
</Window>
</Alloy>
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函数并覆盖其功能的控制器:
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()
调用(问题区域)时,会调用childView.js的generateMyRows()
方法。然而,这种情况并非如此。 tableview仍然由parentView.js的generateRows()
函数填充。请帮助我,我已经打破了这个好几个小时了!
答案 0 :(得分:1)
迟到但如果你调用$ .generateRows()它应该可以正常工作。