Как обрабатывать динамическое создание представления в сплаве xml

У меня очень простой вид index.xml

<Alloy>
    <Window id="byFav">
        <TableView id="tableByFav" />
    </Window>
<Alloy>

в этой программе я хочу открыть webView и использовать его вместо tableByFav View, когда вы нажимаете tableByFav.

Я не уверен, как описать этот процесс в xml.

Поэтому я пишу код в index.js следующим образом.

$.tableByFav.addEventlistener('click',function(e){
    entryWindow = Titanium.UI.createWindow({
        title: "window"
    });
    entryView = Titanium.UI.createWebView({
        url: "google.com"
    }); 
    entryWindow.add( entryView );
    $.byFav.open( entryWindow );
}

Однако я не уверен, что он подчиняется концепции сплава.

Я пытаюсь понять концепцию сплава.


person whitebear    schedule 10.02.2014    source источник


Ответы (1)


Вы открываете не то окно, попробуйте следующее:

$.tableByFav.addEventlistener('click',function(e){
    var entryWindow = Titanium.UI.createWindow({
        title: "window"
    });
    var entryView = Titanium.UI.createWebView({
        url: "http://www.google.com"
    }); 
    entryWindow.add( entryView );
    // Call open on the entry window itself
    entryWindow.open({
        modal : true // Set to true if you want an opening animation
    });
}

Чтобы сделать это с помощью Alloy, вы можете создать контроллер для веб-представления с именем (entryWindow.xml) следующим образом:

<Alloy>
    <Window id="entryWindow">
        <WebView id="entryView" />
    </Window>
<Alloy>

И в контроллере (entryWindow.js) вы можете установить URL-адрес из предоставленных аргументов:

$.entryView.url = arguments[0].url;

Теперь в вашем контроллере индекса вы должны открыть веб-просмотр следующим образом:

$.tableByFav.addEventlistener('click',function(e){
    // Create a controller, pass url argument
    var controller = Alloy.createController('entryWindow', {url: "http://www.google.com"});
    // Get the controller's view (a window) and open it
    controller.getView().open({
        modal : true // Set to true if you want an opening animation
    });
}
person Josiah Hester    schedule 11.02.2014