离子无法显示模态(Ionic unable to showing modal)
我目前面临着在离子上显示模态的问题(1.7.14)。 我创建了一个简单的应用程序,其中一个页面包含一个列表和一个添加按钮。 在这个按钮上,我想显示一个模式,用于在我的任务列表中添加新元素。
这是我的示例代码
modal.html(在www / templates文件夹中创建的新文件)
<ion-modal-view> <!-- Modal header bar --> <ion-header-bar class="bar-secondary"> <h1 class="title">New Task</h1> </ion-header-bar> <!-- Modal content area --> <ion-content> <button class="button" ng-click="closeModal()">back</button> <form ng-submit="AddItem(data)"> <div class="list"> <label class="item item-input"> <input type="text" placeholder="What do you need to do?" ng-model="data.newItem"> </label> </div> <div class="padding"> <button type="submit" class="button button-block button-positive">Add item</button> </div> </form> </ion-content> </ion-modal-view>
controller.js文件
angular.module('starter.controllers', []) .controller('ToDoListCtrl', function ($scope, $ionicModal) { // array list which will contain the items added $scope.toDoListItems = [{ task: 'First task', status: 'not done' }, { task: 'Second task', status: 'not done' }]; //init the modal $ionicModal.fromTemplateUrl('templates/modal.html', { scope: $scope, animation: 'slide-in-up' }).then(function (modal) { $scope.modal = modal; }); // function to open the modal $scope.openModal = function () { $scope.modal.show(); }; // function to close the modal $scope.closeModal = function () { $scope.modal.hide(); }; //Cleanup the modal when we're done with it! $scope.$on('$destroy', function () { $scope.modal.remove(); }); //function to add items to the existing list $scope.AddItem = function (data) { $scope.toDoListItems.push({ task: data.newItem, status: 'not done' }); data.newItem = ''; $scope.closeModal(); }; });
的index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <title></title> <link href="lib/ionic/css/ionic.css" rel="stylesheet"> <link href="css/style.css" rel="stylesheet"> <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above <link href="css/ionic.app.css" rel="stylesheet"> --> <!-- ionic/angularjs js --> <script src="lib/ionic/js/ionic.bundle.js"></script> <!-- cordova script (this will be a 404 during development) --> <script src="cordova.js"></script> <!-- your app's js --> <script src="js/app.js"></script> <script src="js/controller.js"></script> </head> <!--<body ng-app="starter">--> <body ng-app="starter"> <ion-header-bar class="bar-positive"> <h1 class="title">Todo list</h1> <div class="buttons"> <button class="button icon ion-plus" ng-click="openModal()"> </button> </div> </ion-header-bar> <ion-content> <ion-list ng-controller="ToDoListCtrl"> <ion-item ng-repeat="item in toDoListItems"> {{item.task}} </ion-item> </ion-list> </ion-content> </body> </html>
app.js
angular.module('starter', ['ionic', 'starter.controllers']) .run(function ($ionicPlatform) { $ionicPlatform.ready(function () { if (window.StatusBar) { StatusBar.styleDefault(); } }); })
我尝试在打开模态之前添加console.log('test'),并且在控制台中没有显示日志命令...
I'm currently facing a problem for showing a modal on ionic (1.7.14). I've created simple app with one page containing a list and an add button. On this button, i would like to show a modal for adding new elements in my tasks's list.
Here's my sample code
modal.html (new file created in www/templates folder)
<ion-modal-view> <!-- Modal header bar --> <ion-header-bar class="bar-secondary"> <h1 class="title">New Task</h1> </ion-header-bar> <!-- Modal content area --> <ion-content> <button class="button" ng-click="closeModal()">back</button> <form ng-submit="AddItem(data)"> <div class="list"> <label class="item item-input"> <input type="text" placeholder="What do you need to do?" ng-model="data.newItem"> </label> </div> <div class="padding"> <button type="submit" class="button button-block button-positive">Add item</button> </div> </form> </ion-content> </ion-modal-view>
controller.js file
angular.module('starter.controllers', []) .controller('ToDoListCtrl', function ($scope, $ionicModal) { // array list which will contain the items added $scope.toDoListItems = [{ task: 'First task', status: 'not done' }, { task: 'Second task', status: 'not done' }]; //init the modal $ionicModal.fromTemplateUrl('templates/modal.html', { scope: $scope, animation: 'slide-in-up' }).then(function (modal) { $scope.modal = modal; }); // function to open the modal $scope.openModal = function () { $scope.modal.show(); }; // function to close the modal $scope.closeModal = function () { $scope.modal.hide(); }; //Cleanup the modal when we're done with it! $scope.$on('$destroy', function () { $scope.modal.remove(); }); //function to add items to the existing list $scope.AddItem = function (data) { $scope.toDoListItems.push({ task: data.newItem, status: 'not done' }); data.newItem = ''; $scope.closeModal(); }; });
Index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <title></title> <link href="lib/ionic/css/ionic.css" rel="stylesheet"> <link href="css/style.css" rel="stylesheet"> <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above <link href="css/ionic.app.css" rel="stylesheet"> --> <!-- ionic/angularjs js --> <script src="lib/ionic/js/ionic.bundle.js"></script> <!-- cordova script (this will be a 404 during development) --> <script src="cordova.js"></script> <!-- your app's js --> <script src="js/app.js"></script> <script src="js/controller.js"></script> </head> <!--<body ng-app="starter">--> <body ng-app="starter"> <ion-header-bar class="bar-positive"> <h1 class="title">Todo list</h1> <div class="buttons"> <button class="button icon ion-plus" ng-click="openModal()"> </button> </div> </ion-header-bar> <ion-content> <ion-list ng-controller="ToDoListCtrl"> <ion-item ng-repeat="item in toDoListItems"> {{item.task}} </ion-item> </ion-list> </ion-content> </body> </html>
app.js
angular.module('starter', ['ionic', 'starter.controllers']) .run(function ($ionicPlatform) { $ionicPlatform.ready(function () { if (window.StatusBar) { StatusBar.styleDefault(); } }); })
I tried to add console.log('test') before opening modal and, log command is not diplayed in the console...
原文:https://stackoverflow.com/questions/35841070
最满意答案
您需要在SlidingMenu代码中进行更改。 使
SlidingFragmentActivity
扩展SherlockFragmentActivity
。 然后将ActionBarSherlock作为库项目添加到SlidingMenu。 现在你的项目只需要添加SlidingMenu作为库项目,因为它引用了ActionBarSherlock。引用自https://github.com/jfeinstein10/SlidingMenu#setup-with-actionbarsherlock :
使用ActionBarSherlock进行设置
- 如上设置。
- 签出ActionBarSherlock的干净副本并导入Eclipse工作区。
- 添加ActionBarSherlock作为SlidingMenu的依赖项
- 进入您计划使用的SlidingActivities,使它们延伸
Sherlock___Activity
而不是___Activity
。You need to make a change in the SlidingMenu code. Make
SlidingFragmentActivity
extendSherlockFragmentActivity
. Then add ActionBarSherlock as library project to SlidingMenu. Now your project only has to add SlidingMenu as library project, because that references ActionBarSherlock.Quoted from https://github.com/jfeinstein10/SlidingMenu#setup-with-actionbarsherlock:
Setup with ActionBarSherlock
- Setup as above.
- Checkout a clean copy of ActionBarSherlock and import into your Eclipse workspace.
- Add ActionBarSherlock as a dependency to SlidingMenu
- Go into the SlidingActivities that you plan on using make them extend
Sherlock___Activity
instead of___Activity
.
相关问答
更多-
最后我决定HoloEverywhere对我的应用来说太沉重了,并决定手动包含并应用我需要使用的样式,这解决了我遇到的问题。 此解决方案基于此SO帖子: https : //stackoverflow.com/a/10903421/690917 In the end I decided that HoloEverywhere was too heavy for my application, and decided to include and apply manually the Styles that I ...
-
这是你的问题 import android.view.MenuItem 你必须使用Shearlock菜单而不是android菜单。 删除android MenuItem导入并使用Shearlock one`s import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.Menu; this is your problem import android.view.MenuItem you must use ...
-
Android ActionBarSherlock和SlidingMenu,菜单片段错误(Android ActionBarSherlock and SlidingMenu, Menu Fragment error)[2019-08-12]
好的,我终于通过使用它来解决这个问题 @Override public boolean onCreateOptionsMenu(Menu menu) { itemProgram=menu.add(0, MENU_ID_PROGRAMS, 0, getString(R.string.menuProgram)); itemProgram.setIcon(R.drawable.icon_programs_select).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALW ... -
我可以使用(你需要添加Android兼容性库): public class MainActivity extends SlidingFragmentActivity { private ViewPager viewPager; private RelativeLayout root; @Override public void onCreate(Bundle savedState) { ...
-
要显示第二个菜单,您可以使用: getSlidingMenu().showSecondaryMenu(true); 布尔参数是动画标志。 To show the second menu you can use: getSlidingMenu().showSecondaryMenu(true); The boolean parameter is the animation flag.
-
如何在SlidingMenu中使用SherlockFragmentActivity?(How to use SherlockFragmentActivity with SlidingMenu?)[2024-01-24]
编辑: 我想把这个设计作为一个挑战,看看结果是什么: 正如我在评论中建议的那样,我使用了PagerSlidingTabStrip和ViewPager 。 我没有包含ActionBarSherlock ,但如果需要,将很容易修改: MainActivity将需要从SherlockFragmentActivity扩展,主题@style/Theme.Sherlock.Light添加到清单文件,这就是全部。 (为了确保你明白了, PagerSlidingTabStrip是在底部创建标签的人) 以下是我将PagerS ... -
好吧最后我做到了。 这里mBtnMenu是一个ImageView。 mBtnMenu = (ImageView) findViewById(R.id.btnMenu); menu = new SlidingMenu(this); menu.setMode(SlidingMenu.LEFT); menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); menu.setShadowWidth(5); menu.setFadeDegree(0.0f); ...
-
您需要在SlidingMenu代码中进行更改。 使SlidingFragmentActivity扩展SherlockFragmentActivity 。 然后将ActionBarSherlock作为库项目添加到SlidingMenu。 现在你的项目只需要添加SlidingMenu作为库项目,因为它引用了ActionBarSherlock。 引用自https://github.com/jfeinstein10/SlidingMenu#setup-with-actionbarsherlock : 使用Actio ...
-
如何正确实现SlidingMenu.OnOpenedListener?(How to implement SlidingMenu.OnOpenedListener correctly?)[2023-07-20]
对于那些感兴趣的人来说,这是解决方案。 将OnOpenedListener和OnClosedListener设置为SlidingMenu对象 SlidingMenu menu = new SlidingMenu(this); 显示后退按钮(滑动菜单关闭) menu.setOnOpenedListener(new OnOpenedListener() { @Override public void onOpened() { ... -
SlidingMenu与ViewPager和ActionBarSherlock选项卡(SlidingMenu with ViewPager and ActionBarSherlock Tabs)[2023-12-07]
这里 getSupportFragmentManager() .beginTransaction() .replace(R.id.main, new CalendarFragment()) .commit(); 和这里 @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { if (tab.getPosition() == 0) { Calendar ...