`
luchangbin_66
  • 浏览: 23567 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Vue.js利用数据变化异步加载数据

 
阅读更多

 

vue.js api地址:http://cn.vuejs.org/

 

以下代码之前为同步加载数据,可能会导致页面整体变慢,采用异步加载方式实现

主要利用vue的数据的变化,达到异步加载的效果,动态的添加数据,vue更新数据,达到异步请求加载数据目的,充分理解vue.js加载数据。

 

JS以及页面部分代码片段

//命名数据
    
    var sourceOfTruth = {};
    sourceOfTruth.items = {};
    sourceOfTruth.data = {};
	
//初始化sourceOfTruth数据方法
        initPackageInfo:function(sessionKey,page){
            var data = {
                "token":sessionKey, 
                "pageNum":page,
                "pageSize":pageSize
            };
            $.ajax({
                url:urlConfig.teacherUrl+"/xxx.do",
                dataType:'JSON',
                type:'GET',
                data:data
            }).done(function(cfg){
                if(cfg.stateCode==4002){
                    window.location.href=urlConfig.masterUrl+"login/index.html?goBack="+window.location.href;
                }else if(cfg.stateCode==3000){
                	$("#tj-course-package").show();
                	if(cfg.data==null || cfg.data=='null'){
                		$("#tj-kcb-nodata1").show();
                		sourceOfTruth.items=null;
                	}else{
                	var t1=cfg.data.result;
                	/**
                	 * 去除同步加载数据
                	 * */
                	sourceOfTruth.items = t1;
                	
                    $("#jpage").empty();
                    if(cfg.data.totalCount<=pageSize)return;
                    var total = Math.ceil(cfg.data.totalCount/pageSize);
                    pageNav(
                        $("#jpage"),
                        //点击页码时的回调
                        function(c, t) {
                      	  P.initPackageInfo(qjsessionKey,c);
                      	  $("html,body").animate({scrollTop:$("#tj-course-package").offset().top},1);
                        }
                    ).go(page, total);
                	}
                }
            })
        },	
//vue 中初始化div id=tj-course-package 相当于与id=tj-course-package的域初始化
 setCoursePackageList:function(){
        	var vm4 = new Vue({
                el:'#tj-course-package',
                data:sourceOfTruth,
                // 在 `methods` 对象中定义方法
                methods:{
                       //展开与扩展的onclick点击方法 
                	closeMessage:function(index,idname,event){
                		var id=sourceOfTruth.items[index].id; 
                		var obj =$("#"+idname+index); 
                		if($(obj).hasClass("cur")){
                			event.cancelBubble = true;
                			$(obj).removeClass("cur");
                			$("#mesageTip_"+index).html("展开");
                		}else{
                			//加载数据
                			P.initVideosInfo(id);
                			sourceOfTruth.data=coursePackage;
                			$(obj).addClass("class","cur");
                			$("#mesageTip_"+index).html("收起");
                		}
                	} 
                },
                ready:function(){
                }
            });
        }
		
//页面片段  中 closeMessage 为点击事件,负责异步加载数据
 <div class="s-tjpkcb" id="tj-course-package" style="display:none;">
	    		<h3>精品课程<span>(收益)</span></h3>
	    		
	    		<div class="s-tjpkcb-box">
	    		
	    		    <div v-for="item in items">
	    		   <!-- 点击推荐一行,对应的s-tjpkcb-con添加类名 cur,课程展开, -->
		    			<div class="{{packageId==item.id?'s-tjpkcb-con cur':'s-tjpkcb-con'}}"    id="s-tjpkcb-con_{{$index}}"  v-on:click="tj_pkcb($index,'s-tjpkcb-con_')">
		    				<div class="s-tjpkcbcon-tit cfix">
		    				    <a href="javascript:;">
		    					<p title="{{item.name}}">{{item.name}}</p>
		    					</a>
		    					<input type="button" value="推荐课程" v-on:click="tj_pkcb_info($index)"/>
		    					<a class="s-tjpkcbcon-zk" href="javascript:;"  v-on:click="closeMessage($index,'s-tjpkcb-con_',$event)"><span class="open_close" id="mesageTip_{{$index}}">{{packageId==item.id?'收起':'展开'}}</span><em></em></a>
		    					<div class="s-tjpkcbcon-titjs">{{item.description}}</div>
		    				</div>
		    				<div class="s-tjpkcbcon-bot">
			    				<ul class="s-tggksp-list cfix">
			                        //异步加载数据data
			    					<li v-for="item1 in data">
			                			<p class="s-tggksplist-img">
			    							<a class="" v-on:click="auth_status(item1.id,item.id)" href="javascript:;">
			    							<img v-bind:src="item1.videoPic==null?'http://www.xxx.com/source/specialImg/2016/01/1453202377242912614.png':'http://www.daydays.com'+item1.videoPic" alt="">
			    							</a>
			                                <em v-on:click="auth_status(item1.id,item.id)"></em>
			    						</p>
			    						<p class="s-tggksplist-name" title="{{item1.title}}">
			    							<a v-on:click="auth_status(item1.id,item.id)" href="javascript:;">
			    							{{item1.title}}
			    							</a>
			    						</p>
			    						<a class="s-link" v-on:click="auth_status(item1.id,item.id)" title="{{item1.title}}" href="javascript:;"></a>
		    					    </li>
		    					  
			    				</ul>
		    				</div>
		    				
		    			</div>
	    			</div>

 

分享到:
评论

相关推荐

    Vue.js前端开发 PDF

    7. **异步组件和懒加载**:Vue支持异步组件加载,可以按需加载大型应用的组件,减少初始加载时间。 8. **插槽和作用域插槽**:Vue的插槽机制允许在父组件中定义内容区域,然后在子组件中决定如何显示这些内容,作用...

    Vue.js Up & Running Building Accessible and Performant Web Apps pdf

    在性能优化方面,Vue.js提供了诸如懒加载、异步组件、缓存策略等手段来提升应用的加载速度和运行效率。此外,Vue Router的懒加载功能可以让只在需要时才加载部分路由,降低初始加载时间。Vuex状态管理库可以帮助优化...

    Vue.js前端开发实战-PPT.rar

    - **响应式系统**:Vue.js的响应式系统基于数据绑定,当数据变化时,视图会自动更新。 2. **安装与设置**: - **CLI工具**:Vue CLI(命令行界面)简化了项目初始化和脚手架搭建,提供预设和自定义配置。 - **...

    vue.js 2 web development projects (pdf书+代码)

    1. **响应式系统**:Vue.js 2采用数据绑定和依赖追踪,确保视图在数据变化时自动更新。这种响应性设计简化了状态管理,使开发者能更专注于业务逻辑。 2. **组件化**:Vue.js 2支持可复用的组件,这使得构建复杂应用...

    Vue.js前端开发基础与项目实战

    - **性能优化**:利用Vue的特性如懒加载、异步组件、keep-alive等提升应用性能。 4. **进阶话题**: - **Vue生态**:了解Vuex、Vue Router、Vue CLI等周边库,以及Vue生态系统中的其他工具。 - **单元测试**:...

    Vue.js 3.0从入门到实战【配套资源】.zip

    - **Suspense**:Suspense组件用于处理异步组件加载,提供了一种优雅的方式来处理组件加载时的过渡效果。 - **Fragment和Slot Props**:Vue 3支持了Fragment(多个根节点)和Slot Props,增强了模板的灵活性。 2....

    Vue.js权威指南

    最后,对于想要进行性能优化和深入研究Vue.js的读者,书中会涵盖虚拟DOM的理解,异步组件,以及如何利用Vue.js的render函数进行低级API操作。同时,也会涉及测试驱动开发(TDD)和Vue.js应用的单元测试。 总的来说...

    vue.js入门教程

    3. **异步数据加载**:通过`async`组件和`axios`库,可以方便地处理API请求,实现数据的异步加载。 4. **组件通信**:通过props、事件、provide/inject等方式,组件间可以互相传递数据。 5. **混入(Mixins)**:...

    前端开发框架vue.min.js

    9. **异步组件和懒加载**:Vue.js 支持异步组件,这使得大型应用可以根据需要按需加载组件,减少初始加载时间。 10. **服务端渲染(SSR)**:Vue Server Renderer 可以将Vue组件渲染为HTML字符串,从而实现首屏加载...

    Vue.js 教程

    Vue.js是一款轻量级且易于学习的JavaScript库,专注于构建数据驱动的Web界面。它的设计目标是通过简洁的API实现响应式数据绑定和组件化的视图。 **3.2 Vue.js与其他框架的区别** - **灵活性**:Vue.js主要关注视图...

    基于Vue.js的后台单页应用管理系统的研究与实现

    1. **响应式的数据绑定机制**:Vue.js提供了响应式的双向数据绑定功能,当模型(数据)发生变化时,视图会自动更新,而无需手动操作DOM。 2. **组件化开发**:Vue.js鼓励组件化的开发方式,每个组件都是独立可复用...

    剖析 Vue.js 内部运行机制.zip

    12. **异步组件与懒加载**:Vue.js 支持异步组件,可以按需加载,减少初始加载量,提升用户体验。 13. **过渡效果**:Vue.js 内置了过渡效果系统,结合第三方库如Animate.css或自定义CSS,可以轻松实现组件的入场、...

    剖析 Vue.js 内部运行机制

    Vue.js 提供多种性能优化手段,如懒加载、组件缓存、异步组件和路由懒加载等。此外,还可以通过优化模板、合理利用计算属性和侦听器,以及避免不必要的DOM操作来提升应用性能。 总的来说,Vue.js 的强大之处在于其...

    Vue.js3.0核心源码解析

    另外,Suspense组件用于处理异步组件的加载,提供了一种优雅的预加载用户体验。 此外,Vue3.0的生命周期钩子进行了重大调整。传统的生命周期钩子如`created()`、`mounted()`等被新的`onBeforeMount()`、`onMounted...

    vue.js权威指南最新版

    9. **异步组件与懒加载**:Vue.js支持异步加载组件,以提高应用的启动速度。书会讲解如何实现这一点。 10. **过渡效果**:Vue.js内置了过渡系统,可以方便地添加入场、出场动画,结合第三方库如Animate.css或GSAP...

    Vue.js 11 Practical Projects

    最后,优化方面,Vue.js提供了如懒加载、异步组件、keep-alive等手段来提升应用性能。同时,理解Vue的渲染原理和性能瓶颈分析也是高级开发者必须掌握的技能。 通过"Vue.js 11 Practical Projects"的学习,开发者...

    Vue.js 2.0 参考手册.CHM

    Vue.js 2.0 是一款流行的前端JavaScript框架,由尤雨溪开发,旨在简化Web应用程序的构建。Vue.js 2.0 强调组件化、响应式数据绑定和易用性,使得开发者能够快速构建高性能的用户界面。该“Vue.js 2.0 参考手册”提供...

    前端主流框架 vue.js笔记

    4. **异步组件与懒加载**:Vue.js支持异步组件,可以按需加载,显著提升页面加载速度。 5. **插槽和作用域插槽**:插槽用于组件内容的插入,作用域插槽则允许子组件向父组件传递数据,进行内容定制。 三、深度学习...

    vue.min.js和vue-router.min.js

    Vue.js 是一款轻量级的前端JavaScript框架,由尤雨溪开发,因其易学易用、高性能和灵活性而广受欢迎。Vue的核心库专注于视图层,易于集成到其他库或现有项目中,使得构建用户界面变得更为简单。"vue.min.js" 文件是...

Global site tag (gtag.js) - Google Analytics