2017-07-16 2 views
0

J'ai un problème. Il y a une vue row.xmlAccès externe pour afficher les éléments créés avec createController et ajoutés à une autre vue

<Alloy> 
    <View> 
     <Switch id = "search_switch" bindId = "search_switch" /> 
     <Label id = "search_switch_label" /> 
    </ View> 
</Alloy> 

Et Vue principale

<View id = "general" bindId = "general "> 
    <Label id = "testLabel" /> 
</View> 

Quand j'ajouter

var control = Alloy.createController ('row'); 
Control.search_switch_label.text = 'TEST'; 
$.parent.add (control.getView()); 

Tout est parfaitement ajouté, mais comment accéder aux méthodes et propriétés de search_switch?

$ .search_switch - indique que "undefined" !!!

$ .testLabel.text = '1234567890'; - Tout est OK!

Répondre

0

Dans votre vue principale si vous essayez d'obtenir les méthodes de row.xml, alors vous avez deux façons de le faire:

1) À l'aide des exportations (en row.js)

var init = function(){ 
    // some code here 
} 

exports.getInit = init; 

2) en utilisant les Alloy.Globals (en row.js)

Alloy.Globals.init = function(){ 
    // some code here 
} 

Maintenant, pour accéder à la fonction init Vue principale, vous devrez effectuer les opérations suivantes respectivement:

1) accéder à la fonction d'exportation (en MainView.js)

var control = Alloy.createController ('row'); 
control.getInit(); 

2) accéder à la fonction Alloy.Globals (en MainView.js)

var control = Alloy.createController ('row'); 

if(Alloy.Globals.init) 
    Alloy.Globals.init(); 

Bonne chance & Vive

0

chose Firs selon votre code est que lorsque vous utilisez $, cela signifie que vous accédez aux commandes du régulateur de courant de sorte que vous ne pouvez pas utiliser les commandes d'un autre contrôleur juste en utilisant le signe $. Dans votre cas, vous devez définir une référence dans votre fichier row.js afin de pouvoir accéder à ces contrôles ou à toute variable ou fonction dans d'autres contrôleurs.

Vous devez faire la même chose que pour search_switch_label. Vous pouvez accéder à l'objet search_switch par l'objet de contrôle dans main.js comme

control.search_switch.value