Thi*_*rer 47 html javascript angularjs ionic-framework
理想情况下,当我点击按钮(位于顶部的Ionic导航栏中)时,它应该将我带到另一页.然而它不起作用.点击后,导航栏按钮全部消失.
当我使用虚拟代码时,它有效; 警报出现.但是当我将它交换到实际代码时,它无法工作.
我对控制器代码以及如何引用URL或视图感到有些不适.但是使用href和ui-sref进行测试也无法产生任何结果.Google Devt Tools(JS控制台)和Batarang也没有显示任何内容.
有人能告诉我的方式吗?
虚拟HTML代码
<button class="button button-icon ion-compose" ng-click="create()"></button>
Run Code Online (Sandbox Code Playgroud)
js文件中的虚拟控制器代码
$scope.create = function() {
alert("working");
};
Run Code Online (Sandbox Code Playgroud)
实际的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>
Run Code Online (Sandbox Code Playgroud)
控制器文件(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");
};
});
Run Code Online (Sandbox Code Playgroud)
状态js文件的摘录
.state('tab.newpost', {
url: '/newpost',
views: {
'tab-newpost':{
templateUrl: 'templates/tab-newpost.html',
controller: 'NewCtrl'
}
}
});
$urlRouterProvider.otherwise('/auth/login');
Run Code Online (Sandbox Code Playgroud)
Rad*_*ler 36
基于评论,并且由于@Thinkerer (OP - 原始海报)为此案例创建了一个插件,我决定附加更多详细信息的答案.
第一个也是重要的变化:
// instead of this
$urlRouterProvider.otherwise('/tab/post');
// we have to use this
$urlRouterProvider.otherwise('/tab/posts');
Run Code Online (Sandbox Code Playgroud)
因为州的定义是:
.state('tab', {
url: "/tab",
abstract: true,
templateUrl: 'tabs.html'
})
.state('tab.posts', {
url: '/posts',
views: {
'tab-posts': {
templateUrl: 'tab-posts.html',
controller: 'PostsCtrl'
}
}
})
Run Code Online (Sandbox Code Playgroud)
我们需要他们连接的网址'/tab'
+ '/posts'
.那是我们想要用作其他人的网址
应用程序的其余部分非常接近我们需要的结果......
例如,我们必须将内容放入相同的视图targetgood,只是这些被更改:
.state('tab.newpost', {
url: '/newpost',
views: {
// 'tab-newpost': {
'tab-posts': {
templateUrl: 'tab-newpost.html',
controller: 'NavCtrl'
}
}
Run Code Online (Sandbox Code Playgroud)
因为.state('tab.newpost'
将被替换的.state('tab.posts'
,我们必须把它放到同一个锚:
<ion-nav-view name="tab-posts"></ion-nav-view>
Run Code Online (Sandbox Code Playgroud)
最后对控制器进行一些调整
$scope.create = function() {
$state.go('tab.newpost');
};
$scope.close = function() {
$state.go('tab.posts');
};
Run Code Online (Sandbox Code Playgroud)
正如我在之前的回答和评论中已经说过的那样 ......这$state.go()
是唯一正确的方法,如何使用ionic
或ui-router
检查所有在这里
最后说明一点-我犯之间运行只是导航tab.posts
... tab.newpost
...其余的将是类似
Yan*_*ang 14
<a>
与href一起使用而不是<button>
解决我的问题.
<ion-nav-buttons side="secondary">
<a class="button icon-right ion-plus-round" href="#/app/gosomewhere"></a>
</ion-nav-buttons>
Run Code Online (Sandbox Code Playgroud)
有人认为你应该改变的是电话$state.go()
.如下所述:
传递的参数应该是州名
$scope.create = function() {
// instead of this
//$state.go("/tab/newpost");
// we should use this
$state.go("tab.newpost");
};
Run Code Online (Sandbox Code Playgroud)
从一些引用文档(第一个参数来的[$state.go(to \[, toParams\] \[, options\]
):
字符串绝对状态名称或相对状态路径
要转换到的状态的名称或相对状态路径.如果路径以^或开头.然后它是相对的,否则它是绝对的.
一些例子:
$state.go('contact.detail') will go to the 'contact.detail' state
$state.go('^') will go to a parent state.
$state.go('^.sibling') will go to a sibling state.
$state.go('.child.grandchild') will go to a grandchild state.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
185911 次 |
最近记录: |