【发布时间】:2014-10-17 07:52:48
【问题描述】:
理想情况下,当我单击按钮(位于顶部的 Ionic 导航栏中)时,它应该将我带到另一个页面。但是它不起作用。单击后,导航栏按钮全部消失。
当我使用虚拟代码时,它可以工作;出现警报。 但是当我把它换成实际的代码时,它就无法工作了。
我感觉控制器代码以及 URL 或视图的引用方式有些问题。但是使用 href 和 ui-sref 进行测试也无法产生任何结果。 Google Devt Tools(JS 控制台)和 Batarang 也没有显示任何内容。
谁能给我指路?
虚拟 html 代码
<button class="button button-icon ion-compose" ng-click="create()"></button>
js 文件中的虚拟控制器代码
$scope.create = function() {
alert("working");
};
实际的 html 代码(我尝试了所有 4 个版本)
<button class="button button-icon ion-compose" ng-click="create('tab.newpost')"></button>
<button class="button button-icon ion-compose" ui-sref="tab.newpost"></button>
<button class="button button-icon ion-compose" href="/tab/newpost"></button>
<button class="button button-icon ion-compose" ng-click="location.path('/tab/newpost')"></button>
控制器文件(Post 和 Auth 依赖项工作正常)。当我尝试将 URL 同时放入 .go() 和 function() 中时,应用程序失败。
app.controller('NavCtrl', function ($scope, $location, $state, Post, Auth) {
$scope.post = {url: 'http://', title: ''};
$scope.create = function() {
/* $location.path('/tab/newpost'); */ /* this variant doesnt work */
$state.go("/tab/newpost");
};
});
状态js文件摘录
.state('tab.newpost', {
url: '/newpost',
views: {
'tab-newpost':{
templateUrl: 'templates/tab-newpost.html',
controller: 'NewCtrl'
}
}
});
$urlRouterProvider.otherwise('/auth/login');
【问题讨论】:
-
您是否要重新加载整个页面?还是直接导航到那个标签?
-
该应用在顶部和底部都有一个导航栏。底部栏由状态“选项卡”表示。单击时,它应该导航到新页面,而导航栏和底部栏保持不变。
-
如果您可以提供给我们codepen 链接,那么我们会更容易为您提供帮助。
-
只是为了确定,你检查我的答案了吗?您的问题来自 ui-router,它是 ionic 框架的一部分。必须正确调用 $state.go - 使用州名,而不是网址...希望这会有所帮助;)
-
@RadimKöhler 我尝试了 $state.go 和 $window 方法,但都有一个 Cannot GET /tab/newpost 错误(当 html 有一个 ng-click=create() 而不是 ng-click (“tab.newpost”)我猜这意味着它有点工作。如果使用 $state.go,我不知道如何使它工作。Codepen 在这里工作很差,因为我有各种与数据库和其他项目相关的代码我无法插入。
标签: javascript html angularjs ionic-framework