我有一个名为overlay.xml
的钛合金视图,该视图没有控制器。我正在另一个称为episode.js
的控制器中创建它,并将其添加到episode.xml
中的容器中。我这样做是为了使overlay.xml
成为可以在任何地方添加的可重用视图。
例如
Episode.js
// create the overlay view
var overlay = Alloy.createController("overlay").getView();
// add it somewhere in episode.xml
$.episodeImage.add(overlay);
在
overlay.xml
中,我想在Episode View
中访问几个组件,例如按钮和标签,以向其中添加事件侦听器。例如:overlay.xml
<Alloy>
<View id="overlay">
<Button id="theButton" title="Click Me!" />
<Label id="theLabel" text="I am a label" />
</View>
</Alloy>
然后以Episode.js为例:
var overlay = Alloy.createController("overlay").getView();
$.episodeImage.add(overlay);
// EXAMPLE: Get the button from overlay.xml and add an event listener
$.theButtonFromOverlayXML.addEventListener("click", function () {
alert("You clicked the button from overlay.xml!"):
});
是否有可能做到这一点?
最佳答案
是的,您可以在另一个控制器中通过其ID访问视图。唯一需要将控制器对象和视图对象分配给两个不同的变量:
Episode.js
var overlay = Alloy.createController("overlay");
overlay.theButton.addEventListener('click', function() {
alert('You clicked the button from overlay.xml!');
});
var overlayView = overlay.getView();
$.episodeImage.add(overlayView);
// shorter version
$.episodeImage.add( overlay.getView() );