2

さて、私は最近、exports.BaseController を使用して Alloy コントローラーの関数を継承し、(必要に応じて) オーバーライドする方法を発見しました。これで、行が動的に生成されるテーブルを含むビュー ページができました。以下は、xml ビュー ファイルと関連するコントローラー ファイル (その一部) です。

parentView.xml

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

parentView.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