gpt4 book ai didi

钛合金 - 创建没有 Controller 的 View 并访问该 View 内的组件

转载 作者:行者123 更新时间:2023-12-02 21:45:01 25 4
gpt4 key购买 nike

我有一个名为 overlay.xml 的钛合金 View ,它没有 Controller 。我在另一个名为 episode.js 的 Controller 中创建它,并将其添加到 episode.xml 中的容器中。我这样做是为了使 overlay.xml 成为可以添加到任何地方的可重用 View 。

例如

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!"):
});

可以这样做吗?

最佳答案

是的,您可以通过另一个 Controller 中的 View ID 来访问 View 。只需要将 Controller 对象和 View 对象分配给两个不同的变量:

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() );

关于钛合金 - 创建没有 Controller 的 View 并访问该 View 内的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22477249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com