初めて質問させていただきます。
今、monacaのonsenuiとAngularJSを使ってアプリを開発しています。
home.htmlにあるbutton1をクリックするとbutton.htmlがダイヤログで表示されるよなアプリを作成しています。
ここで2つ問題が起きました。
まずはソースを見てください。
home.html
html
1 <ons-template id="home.html"> 2 <ons-page> 3 <ons-toolbar> 4 <div class="left"> 5 <ons-toolbar-button ng-click="app.toggle()"> 6 <ons-icon icon="md-menu"></ons-icon> 7 </ons-toolbar-button> 8 </div> 9 <div class="center"> 10 Main 11 </div> 12 </ons-toolbar> 13 <div ng-controller="DialogController as dlgc"> 14 <ons-button ng-click="dlgc.show('button.html')" id="btn1">button1</ons-button> 15 </div> 16 </ons-page> 17 </ons-template>
button.html
html
1<ons-template id="button.html"> 2 <ons-dialog var="dialog" modifier="material" cancelable> 3 <div class="dialog-container" style="height: 200px;"> 4 <ons-page> 5 <ons-toolbar> 6 <div class="center"> 7 <div ng-controller="DialogController as dlgc" ng-cloak> 8 <span ng-bind="dlgc.button"></span> 9 </div> 10 </div> 11 </ons-toolbar> 12 <ons-list ng-controller="listController as lstc"> 13 <ons-list-item ng-click="lstc.output('1')" modifier="tappable"> 14 リストを押した 15 </ons-list-item> 16 </ons-list> 17 </ons-page> 18 </div> 19 </ons-dialog>
javascript.js
javascript
1 ons.bootstrap() 2 //ダイアログを開く処理 3 .controller('DialogController', function($scope) { 4 this.button="button"; 5 this.show = function(dlg) { 6 ons.createDialog(dlg).then(function(dialog) { 7 dialog.show(); 8 }); 9 } 10 }) 11 //リストを選んだときの処理 12 .controller('listController', function($scope) { 13 this.output = function(key){ 14 dialog.hide(); 15 keyword=key; 16 console.log(keyword); 17 } 18 });
前提・実現したいこと
2つあります。
- javascript.jsにあるthis.button="button";
の"button"
のところをindex.htmlでクリックされたボタンのラベルを表示したい。
- button.htmlにある
<span ng-bind="dlgc.button"></span>
に上のラベルを表示したい。
発生している問題・エラーメッセージ
- 1つめの問題については全くどうすればいいのかわかりません。
- 2つめの問題は、現状では
<ons-list-item ng-click="lstc.output('1')" modifier="tappable">リストを押した</ons-list-item>
をクリックすると一瞬だけbuttonと表示されダイアログが消えてしまいます。
どうかご回答の程よろしくお願いいたします。
index.htmlが必要とのことなので載せておきます。よろしくお願いいたします。
html
1<!DOCTYPE HTML> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 6 <meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> 7 <script src="components/loader.js"></script> 8 <script src="lib/angular/angular.min.js"></script> 9 <script src="lib/onsenui/js/onsenui.min.js"></script> 10 <script src="lib/onsenui/js/angular-onsenui.min.js"></script> 11 12 <link rel="stylesheet" href="components/loader.css"> 13 <link rel="stylesheet" href="lib/onsenui/css/onsenui.css"> 14 <link rel="stylesheet" href="lib/onsenui/css/onsen-css-components.css"> 15 <link rel="stylesheet" href="css/style.css"> 16 17 <script> 18 ons.bootstrap() 19 //左上のページを変える処理 20 .controller('AppController', function($scope) { 21 this.load = function(page) { 22 $scope.splitter.content.load(page); 23 $scope.splitter.left.close(); 24 }; 25 this.toggle = function() { 26 $scope.splitter.left.toggle(); 27 }; 28 }) 29 //ダイアログを開く処理 30 .controller('DialogController', function($scope) { 31 this.button="button"; 32 this.show = function(dlg) { 33 ons.createDialog(dlg).then(function(dialog) { 34 dialog.show(); 35 }); 36 } 37 }) 38 //リストを選んだときの処理 39 .controller('listController', function($scope) { 40 this.output = function(key){ 41 dialog.hide(); 42 keyword=key; 43 console.log(keyword); 44 } 45 }); 46 ons.ready(function() { 47 console.log("Onsen UI is ready!"); 48 }); 49 </script> 50</head> 51<body> 52 53 <ons-splitter ng-controller="AppController as app" var="splitter"> 54 <ons-splitter-side side="left" width="220px" collapse swipeable> 55 <ons-page> 56 <ons-list> 57 <ons-list-item ng-click="app.load('home.html')" tappable> 58 Home 59 </ons-list-item> 60 <ons-list-item ng-click="app.load('settings.html')" tappable> 61 Settings 62 </ons-list-item> 63 <ons-list-item ng-click="app.load('about.html')" tappable> 64 About 65 </ons-list-item> 66 </ons-list> 67 </ons-page> 68 </ons-splitter-side> 69 <ons-splitter-content page="home.html"></ons-splitter-content> 70 </ons-splitter> 71 72 <ons-template id="home.html"> 73 <ons-page> 74 <ons-toolbar> 75 <div class="left"> 76 <ons-toolbar-button ng-click="app.toggle()"> 77 <ons-icon icon="md-menu"></ons-icon> 78 </ons-toolbar-button> 79 </div> 80 <div class="center"> 81 Main 82 </div> 83 </ons-toolbar> 84 <div ng-controller="DialogController as dlgc"> 85 <ons-button ng-click="dlgc.show('button.html')" id="btn1">button1</ons-button> 86 </div> 87 </ons-page> 88 </ons-template> 89 90 <ons-template id="settings.html"> 91 <ons-page> 92 <ons-toolbar> 93 <div class="left"> 94 <ons-toolbar-button ng-click="app.toggle()"> 95 <ons-icon icon="md-menu"></ons-icon> 96 </ons-toolbar-button> 97 </div> 98 <div class="center"> 99 Settings 100 </div> 101 </ons-toolbar> 102 </ons-page> 103 </ons-template> 104 105 <ons-template id="about.html"> 106 <ons-page> 107 <ons-toolbar> 108 <div class="left"> 109 <ons-toolbar-button ng-click="app.toggle()"> 110 <ons-icon icon="md-menu"></ons-icon> 111 </ons-toolbar-button> 112 </div> 113 <div class="center"> 114 About 115 </div> 116 </ons-toolbar> 117 </ons-page> 118 </ons-template> 119 120<ons-template id="button.html"> 121 <ons-dialog var="dialog" modifier="material" cancelable> 122 <div class="dialog-container" style="height: 200px;"> 123 <ons-page> 124 <ons-toolbar> 125 <div class="center"> 126 <div ng-controller="DialogController as dlgc" ng-cloak> 127 <span ng-bind="dlgc.button"></span> 128 </div> 129 </div> 130 </ons-toolbar> 131 <ons-list ng-controller="listController as lstc"> 132 <ons-list-item ng-click="lstc.output('1')" modifier="tappable"> 133 リストを押した 134 </ons-list-item> 135 </ons-list> 136 </ons-page> 137 </div> 138 </ons-dialog> 139</body> 140</html>
回答2件
あなたの回答
tips
プレビュー