如果您想了解AngularJSng单击以转到另一页面和使用Ionic框架的知识,那么本篇文章将是您的不二之选。我们将深入剖析AngularJSng单击以转到另一页面的各个方面,并为您解答使用Ionic
如果您想了解AngularJS ng单击以转到另一页面和使用Ionic框架的知识,那么本篇文章将是您的不二之选。我们将深入剖析AngularJS ng单击以转到另一页面的各个方面,并为您解答使用Ionic框架的疑在这篇文章中,我们将为您介绍AngularJS ng单击以转到另一页面的相关知识,同时也会详细的解释使用Ionic框架的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- AngularJS ng单击以转到另一页面(使用Ionic框架)(angularjs跳转页面)
- angular.js和ionic框架搭建一个webApp
- angularjs ionic 做的项目,路由跳转到子页面有问题!
- angularjs – $state.go不使用第三级嵌套状态(使用Ionic选项卡/ AngularUI)
- AngularJS – (使用Ionic框架) – 头标题上的数据绑定不起作用
AngularJS ng单击以转到另一页面(使用Ionic框架)(angularjs跳转页面)
理想情况下,当我单击按钮(位于顶部离子导航栏上)时,它应该将我带到另一页。但是它不起作用。单击后,导航栏按钮全部消失。
当我使用伪代码时,它可以工作;警报出现。但是,当我将其交换为实际代码时,它将无法正常工作。
我感觉控制器代码以及URL或视图的引用方式有问题。但是使用href和ui-sref进行测试也无法产生任何结果。Google Devt
Tools(JS控制台)和Batarang也没有显示任何内容。
有人可以给我指路吗?
虚拟HTML代码
<buttonng-click="create()"></button>
js文件中的虚拟控制器代码
$scope.create = function() { alert("working");};
实际的html代码(我尝试了全部4个版本)
<buttonng-click="create(''tab.newpost'')"></button><buttonui-sref="tab.newpost"></button><buttonhref="/tab/newpost"></button><buttonng-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'');
答案1
小编典典基于评论,并且由于@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()
是如何使用的唯一正确途径ionic
或ui-router
检查这里 所有内容 最后的注意事项-
我只是在tab.posts
… 之间进行导航tab.newpost
,其余部分类似
angular.js和ionic框架搭建一个webApp
angular.js和ionic框架搭建一个webApp
@H_301_11@ AngularJS有五个主要核心特性,如下介绍:
双向数据绑定—— 实现了把model与view完全绑定在一起,model变化,view也变化,反之亦然。
模板—— 在AngularJS中,模板相当于HTML文件被浏览器解析到DOM中,AngularJS遍历这些DOM,也就是说AuguarJS把模板当做DOM来操作,去生成一些指令来完成对view的数据绑定。
MVVM—— 吸收了传统的MVC设计模式针但又并不执行传统意义上的MVC,更接近于MVVM(Moodel-View-viewmodel)。
依赖注入—— AngularJS拥有内建的依赖注入子系统,可以帮助开发人员更容易的开发,理解和测试应用。
指令—— 可以用来创建自定义的标签,也可以用来装饰元素或者操作DOM属性
@H_301_11@ ionic简介:ionic是一个强大的_混合式/hybrid_HTML5移动开发框架,特点是使用标准的HTML、 CSS和JavaScript,开发跨平台(目前支持:Android、iOS,计划支持:Windows Phone、Firefox OS) 的原生App应用。
@H_301_11@
CSS框架- 提供原生_App质感的CSS样式模拟_。ionic这部分的实现使用了ionicons图标样式库。
JavaScript框架- ionic基于AngularJS基础框架开发,遵循AngularJS的框架约束;主要提供了适应移动端UI的 AngularJS的扩展,主要包括指令和服务。此外,ionic使用AngularUI Router来实现前端路由。
命令行/CLI- 命令行工具集用来简化应用的开发、构造和仿真运行。ionic命令行工具使用了 Cordova,依赖于平台SDK(Android & iOS)实现将移动web项目打包成原生app。
由于ionic使用了HTML5和CSS3的一些新规范,所以要求iOS7+/Android4.1+。 在低于这些版本的手机上使用ionic开发的应用,有时会发生莫名其妙的问题。
安装ionic/Install Ionic
@H_301_11@ 首先您需要安装Node.js. 其次,安装最新版本的cordova 和 ioniccommand-line tools. 通过参考Android和iOS官方文档来安装.npm install -g cordova ionic
通过Ionic创建一个项目
@H_301_11@ 使用Ionic官方提供的现成的应用程序模板,或一个空白的项目创建一个Ionic应用。@H_301_11@ionic start myApp blank 创建一个空白的app项目 (下图1)
ionic start myApp tabs 创建一个带有tabs项目(下图2)
ionic start myApp sidemenu 创建一个带有滑动的项目(下图3)
下面先从app.js说起
@H_301_11@打开这个ionic.bundle.min.js看一下就知道合成了什么东西了,如图: @H_301_11@
@H_301_11@ 上述是ui-router的基本用法,详情用法可以去查看官方文档。$stateProvider.state(name,{
url: '',
templateUrl:'',// 这个是模板位置
controller: '' // 这个是对应模板的controller名称!记住是名称不是位置
});
app.js配置完,下面就配置controller
@H_301_11@ 刚才我们配置完了app.js,我们要新建一个名字叫homeCtrl的controller。命名我建议XXXCtrl或者XXXController,当然以你们项目为标准。 @H_301_11@@H_301_11@ 创建完成homeCtrl之后呢,在index.html中引用,如下图: @H_301_11@angular.module('myApp') 就是载入刚才创建的模块,然后设置一个叫做homeCtrl的controller,
格式一般都是angular.module('myApp').controller(name,[params,function(params) {}])。
创建home模板
@H_301_11@ 在刚才创建文档template文件夹当中,新建一个home.html。也就是刚才配置app.js中的路由中写的路径和名字,忘记的回头看看app.js是怎样写的。在刚才创建的home.html,写上以上内容 @H_301_11@ 如下图:创建home.html模板和homeCtrl.js之后。我们试着启动,在浏览器中打开index.html这个文件,这个文件作为一个项目的入口。ion-view就是这个页面的顶层,所有内容都在这个view中,ion-header就是那个头部,ion-content就是内容。这些都不是必须的,但是我建议这样写,因为ionic有些组件是需要在这些标签里面才能起作用的。然后看到如下图: @H_301_11@
创建app.js和html模板及homeCtrl模板总结
@H_301_11@ 其实我们写项目的思路:举刚才那个例子1、创建一个app.js,首先能启动项目,然后配置路由。其中路由需要模板和controller那么问题来了,接着看2、3、步。
2、然后创建模板,XXX.html模板。
3、最后创建XXXCtrl.js的controller。
编写控制器与模板
@H_301_11@ 下面来点有意思的吧,先来个轮播图。那就用ionic框架自带的吧,具体查文档即可,如下图: @H_301_11@1、ng-repeat="item in views.slideData track by $index",意思就是从$scope.views.slideData数组遍历,item是数组里面的某一项,track by $index其实是性能优化,后续会讲,你也可以不写直接ng-repeat="item in views.slideData"
2、之前由<img src="路径"> 这种变成 <img ng-src="{{item}}",其中ng-src是一个angular自带的指令,item是数组遍历出来的路径
从服务器获取数据
@H_301_11@ 啰嗦的话不说了,直接上案例。如图: @H_301_11@@H_301_11@ 既然要数据,那么先建一个服务,使用 angular.module 的 factory API创建服务,是最常见也是最灵活的方式。其实还有几种
@H_301_11@ ,具体详情查文档,不过多数项目用这种(factory)创建方法就满足需求了。举个简单例子 @H_301_11@ factory() 方法是创建和配置服务的最快捷方式。 factory() 函数可以接受两个参数。factory()
service()
constant()
value()
provider()
@H_301_11@ 需要注册的服务名。name (字符串)
@H_301_11@ 这个函数会在AngularJS创建服务实例时被调用。getFn (函数)
@H_301_11@ 要上我们真实的示例代码了哦,如下图: @H_301_11@angular.module('myApp')
.factory('myService',function() {
return {
'username': 'auser'
};
});
@H_301_11@ 有同学觉得奇怪了,怎么会是app.factory呢?其实app就是angular.module('myApp',[]),我在app.js文件里面把angular.module('myApp',[])赋值给全局变量app了。见下图: @H_301_11@
promise.then(function(resp){
// resp是一个响应对象
},function(resp) {
// 带有错误信息的resp
});
// 或者使用success/error方法
promise.success(function(data,status,headers,config){
// 处理成功的响应
});
@H_301_11@ 然后看看控制台输出什么,还是看图:// 错误处理
promise.error(function(data,config){
// 处理非成功的响应
});
@H_301_11@
1、创建services并写好里面的服务,然后在index.html引入services。
2、homeCtrl中注入依赖services里面的factory服务,调用里面的方法。
3、在homeCtrl调用factory服务方法,然后获取数据。再把数据赋值给$scope。所以模板也能获取$scope里面的数据,那么页面数据就更新了。
编写过滤器
@H_301_11@ 上面已经教会大家如何建立一个services服务获取数据,但是有时候我们获取数据回来的数据做进一步修改显示在页面,下面假如我们有一个需求,我想把姓名全部变成大写。@H_301_11@1、首先创建一个filter。
2、在index.html引入filter。(这个不说了,请看上面services怎么引入的)
@H_301_11@姓名:{{item.Name | toupperCaseText}}
@H_301_11@ 过滤器总结
1、分析需求怎样的数据在页面,查阅内置过滤器是否满足需求。
2、假如需求内置过滤器不能满足,创建filter.js,编写处理数据逻辑。
3、在index.html引入过滤器。在需要用过滤器的加上“|”,例如:{{item.Name | toupperCaseText}}
页面之间传递数据
@H_301_11@ 当我们写完home.html页面并且完成了homeCtrl,及通过services获取后台服务器的数据,展示到页面,证明我们成功了一个小项目的大部分。你可以想象,一个项目都是获取数据,展示数据(至于怎样展示,点击展示还是默认展示,这是交互性的东西),或者提交数据,提交数据本文并没有说,但是我们已经知道怎样获取了,提交还困难么。都是差不多的原理。自己翻阅文档看看$http的方法就可以解决了。我们下面继续实现一个需求,点击刚才的某一项列表,跳到详情页。@H_301_11@新建一个详情页detail.html,新建一个detailCtrl的控制器,并且配置详情页路由。忘记了的可以看看前面新建home的步骤。(记得在index.html引入detailCtrl哦,否则会报下面的错,看图)
@H_301_11@思路就是ng-click="views.goDetail(item)"; views.goDetail就是跳转到detail页面,跳转路由使用$state.go("XXX");XXX代表路由的名称,item就是你点击某一项的数据,看图:
@H_301_11@1、可以用$rootScope顶级作用域,从A页面赋值给$rootScope的某个属性,然后B页面获取数据赋值到页面。
@H_301_11@2、在A页面用$state.go("xxx",{obj});配置路由参数,然后在B页面用$stateParams对象获取url的参数。
@H_301_11@
@H_301_11@3、在services里面建立一个服务,在A页面把数据传递给这个服务,然后在B页面获取这个服务的值。为什么可以这样做?因为services服务里面的方法是共享的,当项目初始化的时候services已经实例化了一次(服务是一个单例对象,在每个应用中只会被实例化一次(被 $injector 实例化),并且是延迟加载的(需要时才会被创建)),所以不存在跳转页面就数据没了。(这个是最佳实践哦,不过也要看业务场景。这个是我最常用的)。
@H_301_11@
@H_301_11@ 数据绑定,从刚一开始从服务获取数据,然后把数据绑定到$scope上,然后在页面输入{{}}花括号输出,这种就是数据绑定了。那我们来个假设,现在有个输入框,输入框是多少,列表中的那个人的年龄是多少。 @H_301_11@ 由于这个需求,就是双向数据绑定,可以ng-model用绑定一个变量,这个变量赋值给年龄,那么年龄也跟着变了。看下图: @H_301_11@
@H_301_11@ 好啦好啦,初始化做完了。下面呢,我们在input输入框值,改变一下input框里面的值,看看有什么变化。 @H_301_11@ 改变了 @H_301_11@ 输入框里面的值改变了,上面的年龄值也改变了。证明$scope.views.age的值改变了,这些就是数据绑定了。 @H_301_11@ 数据绑定总结 @H_301_11@ 当AngularJS认为某个值可能发生变化时,它会运行自己的事件循环来检查这个值是否变“脏”。如果该值从上次事件循环运行之后发生了变化,则该值被认为是“脏”值。这也是Angular可以跟踪和响应应用变化的方式。这个事件循环会调用$digest()循环(这个你们查查文档就能知道了)。这个过程被称作脏检查(dirty checking)。脏检查是检查数据模型变化的有效手段。当有潜在的变化存在时,AngularJS会在事件循环时执行脏检查(查阅文档)来保证数据的一致性。
angularjs ionic 做的项目,路由跳转到子页面有问题!
按照例子,我在app.js中设置了俩个页面的路由:
.state(''tab.user'', {
url: ''/user'',
views: {
''tab-user'': {
templateUrl: ''templates/user/user.html'',
controller: ''UserCtrl''
}
}
})
.state(''userdetail'',{
url:''/userdetail/:uaid'',
templateUrl:''templates/user/userdetail.html'',
controller:''UserdetailCtrl''
})
控制器也相应设置后,在user.html页面里的列表设置跳转:
<ling-repeat="item1 in item1s"ui-sref="#/userdetail/{{item1.gameId}}" >
但是点击后就报错:Error: Could not resolve ''#/userdetaill/11001'' from state ''tab.user''
transitionTo@file :。。。。。
假如我写成ui-sref="userdetail"就可以过去,但这样过去带不了$stateParams了,我是错在哪里了,求大神指教!
angularjs – $state.go不使用第三级嵌套状态(使用Ionic选项卡/ AngularUI)
这就是我的意思:http://codepen.io/anon/pen/Jykmi?editors=101
按“Tab2”按钮既不起作用也不引发错误.尽管如此,用ui-sref =“tabs.tab2.home1”或href =“#/ tabs / tab2 / home1”替换ng-click =“goToState(‘tabs.tab2.home1’)”(第25行),工作得很好.这是一个例子:http://codepen.io/anon/pen/DIxhC?editors=101
即使使用ng-click =“goToState(‘tabs.tab2’)”也行,但这不是预期的目标状态.
我发现了其他类似的问题(如this和this)但我不认为他们有同样的问题.
有人知道$state.go是否应该与第三级嵌套状态一起使用?是我的代码中的问题吗?
非常感谢提前.
问候,
拉法.
解决方法
我的回答是肯定的:$state.go()应该与第三级嵌套状态一起使用.
我实际上在我自己的projet中使用它没有问题(但没有离子标签)
AngularJS – (使用Ionic框架) – 头标题上的数据绑定不起作用
这似乎很简单,但对我来说并不奏效。
在我看来,我有以下几点
<view title="content.title"> <content has-header="true" padding="true"> <p>{{ content.description }}</p> <p><ahref="#/tab/pets"> Back to home</a></p> </content> </view>
在上述观点的控制器中,我有
angular.module('App',[]).controller('DetailCtrl',function($scope,$stateParams,MyService) { MyService.get($stateParams.petId).then(function(content) { $scope.content = content[0]; console.log($scope.content.title); // this works! }); });
此视图的数据通过简单的HTTP GET服务(称为MyService)加载。
问题是当我查看此页面时,
<view title="content.title">
不显示标题。这只是一个空白。根据离子文件(http://ionicframework.com/docs/angularjs/controllers/view-state/),我认为我做正确的事情。
很奇怪,“{{content.description}}”部分作品,但“content.title”不起作用?
另外,是因为我正在动态地加载内容(通过HTTP GET)吗?
@H_301_23@如Florian所说,您需要使用服务并解决以获得所需的效果。然后将返回的结果注入控制器。这有一些不利的一面。国家供应商将不会改变路线,直到承诺得到解决。这意味着用户尝试更改位置和实际发生的时间可能会有明显的滞后。
http://plnkr.co/edit/p9b6SWZmBKWYm0FIKsXY?p=preview
@H_301_23@总结
以上是小编为你收集整理的AngularJS – (使用Ionic框架) – 头标题上的数据绑定不起作用全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
今天关于AngularJS ng单击以转到另一页面和使用Ionic框架的讲解已经结束,谢谢您的阅读,如果想了解更多关于angular.js和ionic框架搭建一个webApp、angularjs ionic 做的项目,路由跳转到子页面有问题!、angularjs – $state.go不使用第三级嵌套状态(使用Ionic选项卡/ AngularUI)、AngularJS – (使用Ionic框架) – 头标题上的数据绑定不起作用的相关知识,请在本站搜索。
本文标签: