안녕하세요, 질문글을 너무 계속적으로 올려 불편하진 않으실까 걱정이네요.
(그치만 답답한 마음에 ㅠㅠㅠ… 죄송합니다.)
현재 index.xml에 네비게이션용 View(nav.xml)를 require해서 불러와두었습니다.
그리고 그리고 nav.xml 내의 버튼을 클릭했을 때 메뉴 화면(menu.xml)을 불러서 index에 추가하고 싶습니다.
단순히 createcontroller.getview하면 될 줄 알았는데, index.js에 없는 기능이라 그런지 찾지를 못하네요.
//여기서 이미 menu controller 가 생성이 되어지며 아래의 nav 이벤트에서 윈도우에 더해 주게 됩니다.
var menu = Alloy.createController('menu').getView();
$.nav.addEventListener('click', function(){
$.win.add(menu);
});
만약 menu가 controller의 components folder에 있다고 가정하면
var menu = Alloy.createController('components/menu').getView();
value를 pass하고자 하신다면
var menu = Alloy.createController('components/menu', {
title : "title",
data : "data"
}).getView();
//이렇게 되면 menu.js의 args에서 보낸 value들을 확인하실수 있습니다.
//menu.js 예 : var args = arguments[0] || {};
Ti.API.info(JSON.stringify(args)); // <-- args의 return값은 {"title": "title", "data":
"data"} 가 되겠지요.
// $ 를 보낸다는 의미는 parent의 모든 $이 지정된 아이디들을 보낸다는 의미입니다.
// 말씀하신 것처럼 단순히 한 가지 아이디의 값을 보내셔도 되며 아래의 예제처럼 모든
//값을 보내셔도 됩니다.
Alloy.createController('detailView', {
parent : $,
title : $.nav.title.text
}).getView().open();
$.mainValue = "something";
detailView.js(새로 열리는 뷰가 window일 때)
var parent = args.parent;
var title = args.title; //<--$.nav.title.text 값이 됩니다.
var newValue = parent.mainValue;
Ti.API.info(newValue) //<-- newValue 값은 "something" 이 됩니다.
$.update = function(val){
alert("updating!")
}
//child view에서는 args.update() <-- 이렇게 사용 할 수 있겠죠.
Alloy.createController('detail',{ func :$.update}).getView().open();