好吧,所以我最近发现了如何使用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 的函数填充。请帮帮我,我已经为此烦恼了好几个小时!