当前位置: 首页 > 面试题库 >

AngularJS ng单击以转到另一页面(使用Ionic框架)

冯良才
2023-03-14
问题内容

理想情况下,当我单击按钮(位于顶部离子导航栏上)时,它应该将我带到另一页。但是它不起作用。单击后,导航栏按钮全部消失。

当我使用伪代码时,它可以工作;警报出现。但是,当我将其交换为实际代码时,它将无法正常工作。

我感觉控制器代码以及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>

控制器文件(“发布”和“验证”依赖项正常工作)。 当我尝试将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');

问题答案:

基于评论,并且由于@Thinkerer OP- 原始海报) 为此案创建了一个小插曲,我决定在其他答案后附加更多详细信息。

  • 这是@Thinkerer创建的一个矮人
  • 这是其更新的工作版本

第一个重要变化:

// instead of this
$urlRouterProvider.otherwise('/tab/post');

// we have to use this
$urlRouterProvider.otherwise('/tab/posts');

因为州的定义是:

.state('tab', {
  url: "/tab",
  abstract: true,
  templateUrl: 'tabs.html'
})

.state('tab.posts', {
  url: '/posts',
  views: {
    'tab-posts': {
      templateUrl: 'tab-posts.html',
      controller: 'PostsCtrl'
    }
  }
})

我们需要它们的串联url '/tab'+ '/posts'。这就是我们要用作 其他 网址的网址 __

该应用程序的其余部分确实接近我们需要的结果…
例如,我们仍然不得不将内容放入相同的视图targetgood中,只是对这些内容进行了更改:

.state('tab.newpost', {
  url: '/newpost',
  views: {
    // 'tab-newpost': {
    'tab-posts': {
      templateUrl: 'tab-newpost.html',
      controller: 'NavCtrl'
    }
  }

因为.state('tab.newpost'替换.state('tab.posts'我们必须将其放置在相同的锚点中:

<ion-nav-view name="tab-posts"></ion-nav-view>

最后对控制器进行一些调整:

$scope.create = function() {
    $state.go('tab.newpost');
};
$scope.close = function() { 
     $state.go('tab.posts'); 
};

正如我已经在我前面的答案和注释说 …的 $state.go() 是如何使用的唯一正确途径ionicui-router

检查这里 所有内容 最后的注意事项-
我只是在tab.posts… 之间进行导航tab.newpost,其余部分类似



 类似资料:
  • 试图在用户删除数据时刷新页面。页面上的一些Html元素会自动更新,但主应用程序组件会保留旧数据,直到手动刷新页面。 不再像本例所示那样工作:如何在ionic 4中刷新页面 我尝试改用ngonit(),但没有成功。我也尝试过ChangeDetectorRef,但没有乐趣。 类型脚本 html 数据来自此。内容

  • 问题内容: 如何从一页导航到另一页。假设我有一个登录页面,在输入用户名和密码字段并单击提交按钮后,它需要验证,如果用户名和密码都正确,则需要进入主页。主页内容需要显示。我在这里发布代码。在浏览器中,URL不断变化,但内容没有变化。 index.html home.html test.js 问题答案: 正如@dfsq所说,您需要一个ng-view来放置新视图。当然,如果将ng- view添加到索引中

  • 问题内容: 我的主页上有一个表单,提交后,会将用户带到网站上的另一个页面。我想将输入的表单数据传递给下一页,例如: 用户在表格中输入的电子邮件地址在哪里。我到底该如何完成? 问题答案: 最好的方法是使用POST,这是超文本传输​​协议的一种方法https://developer.mozilla.org/en- US/docs/Web/HTTP/Methods index.php site2.php

  • 预期:当单击来自一个组件(PhotosList)的图像时,它会路由到具有指定url的另一个页面以查看另一个组件(图像详细信息) 现实:当点击图像时,两个组件呈现在同一页面上,但url不同。 使用“react Router dom”中的导入{BrowserRouter作为路由器、交换机、路由、链接}; 这是返回的功能组件(PhotosList) 应用程序文件是

  • 主要内容:实例ionic 单选按钮与标准 type="radio" 的 input元素类似。以下展示了现代app类型的单选按钮。 每个 item-radio 中的 type="radio" 的 input 元素的 name 属性都相同。radio-icon 类用于是否显示图标。 ionic 在单选项中使用了 <label> 元素,使其更易点击。 实例 <div class="list"> <label clas

  • ionic 单选按钮与标准 type="radio" 的 input元素类似。以下展示了现代app类型的单选按钮。 每个 item-radio 中的 type="radio" 的 input 元素的 name 属性都相同。radio-icon 类用于是否显示图标。 ionic 在单选项中使用了 <label> 元素,使其更易点击。 <div class="list"> <label class="