http://www.cnblogs.com/xwwin/p/5816527.html

 

1 script src= " http://code.jquery.com/jquery.min.js " ></script>
2 <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
3 <link href="/static/images/favicon.ico" rel="shortcut icon">
4 <script src="/static/bootstrap/js/bootstrap.min.js" ></script>
5 <script src="/static/bootstrap/bootbox.min.js "></script>
6 <script src="https://vuejs.org/js/vue.min.js "></script>
7 <style>
8 .top { margin-bottom: 30px; }
9 </style>

 

 

 

vue的大体结构是

vm=new Vue({

el:'vue作用元素的css定位表达式', //一般来说可以定位为整个body元素

data:{ 用于定义变量,为json形式},

methods:{用于定义操纵改变上述data中定义的变量的值的方法,

     形式为     func_name:function(i){this.变量名=i;}

    },

computed:{

    用于定义一个实时变量,该变量的值实时等于调用对应方法 返回的结果。与methods中的方法不同的是,methods中的方法只有在html中被触发的了才会执

    行,儿computed中的方法,实时都在运行,返回一个实时变量。 可在methods中通过this.var_name来获取这个实时的值,也可在htlm中绑定这个实时的值。

    形式为  var_name:function(){ var del=this.var_1+2 ;return del }

})

  1 <script>//vue与ajax结合
  2 //python 模板safe,让传递内容不转义
  3     var all_site={{all_site|safe}};
  4         
  5     var vm=new Vue({
  6         el:'#sitepage',
  7         data:{
  8             "manage":all_site,
  9             addArr:{'id':'0','name':'','url':'','comment':'','class':1},
 10             addErr:{'name':false},
 11             nowEditCol:-1,
 12             editStatus:false,
 13             delId:-1
 14             
 15         },
 16         methods:{
 17         editModel:function(){  this.editStatus=true ;},
 18         editModelExit:function(){ this.editStatus=false; },
 19         startDel:function(id){ this.delId=id; },
 20         cancelDel:function(){ this.delId=-1; },
 21         //启动索引index数据 ,编辑单个条目
 22         startEdit:function(id){
 23             this.nowEditCol=id;
 24             this.addArr=this.editArr;
 25             },
 26         //取消单个条目的编辑状态
 27         cancelEdit:function(){
 28             this.nowEditCol=-1;
 29             this.resetStu();
 30             },
 31         //启动索引index数据修改确认,update
 32         sureEdit:function(id){
 33                   var index=this.editArr.index
 34                 //更新后台数据
 35                 var datas={
 36                     'method':'update',
 37                     'id':this.addArr.id,
 38                     'name':this.addArr.name,
 39                     'url':this.addArr.url,
 40                     'comment':this.addArr.comment,
 41                     'class':this.addArr.class
 42                 };
 43                 var result=this.VueAjax(datas);
 44                 if(result){
 45                 //更新前台页面数据显示
 46                   this.manage.splice(index,1,this.addArr);//3个入参时1表示插入,这个列表中的索引位置起插入元素this.editArr
 47                 }
 48               this.nowEditCol=-1;
 49               this.resetStu();//重置弹窗数值
 50         },
 51         //删除索引index数据
 52         deleteStu:function(id){
 53                         //删除后台数据
 54                           var datas={
 55                                     'method':'delete',
 56                                     'id':this.delArr.id
 57                                     };
 58                         var result=this.VueAjax(datas);
 59                         
 60                        
 61                         if(result){
 62                         //删除前台显示数据
 63                         this.manage.splice(this.delArr.index,1);
 64                         
 65                         }       
 66                         this.cancelDel();
 67         },
 68         //新增成绩
 69         submitStu:function(){
 70             if(this.addArr.name==''){
 71                 this.addErr.name=true;
 72                 }
 73                 else{
 74                     this.addErr.name=''
 75                     //ajax新增后台数据,返回id
 76                     var datas={
 77                         'method':'add',
 78                         'name':this.addArr.name,
 79                         'url':this.addArr.url,
 80                         'comment':this.addArr.comment,
 81                         'class':this.addArr.class
 82                     };
 83 
 84                     var return_id=this.VueAjax(datas);
 85                     if(return_id!=false){
 86                         //新增前台数据显示
 87                         var addArr={
 88                             'id':return_id,
 89                             'name':this.addArr.name,
 90                             'url':this.addArr.url,
 91                             'comment':this.addArr.comment,
 92                             'class':this.addArr.class
 93                             };
 94                         this.manage.push(addArr);
 95                     }
 96                     this.resetStu();
 97                 };
 98         },
 99         //复位新增表单
100         resetStu:function(){
101             this.addArr={
102                 'id':'',
103                 'name':'',
104                 'url':'',
105                 'comment':'',
106                 'class':1
107             };
108             this.addErr={'name':false};
109         },
110         //ajax方法
111         VueAjax:function(datas){
112             result=false
113             $.ajax({  
114             url: '/indexs/',  //请求的url地址
115             type: 'POST',              //请求方式
116             data: {"datas":JSON.stringify(datas), 'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()},//传递给服务器的数据
117             dataType:'json',  //这里添加了dataType ,设置返回值类型
118             async : false,
119             success: function (arg) {  
120                 var jsonObj=arg;
121                 var status=jsonObj.status;
122                 if(status){
123                             // alert("success!");
124                             if(jsonObj.id){
125                                                 result= jsonObj.id;
126                                             }
127                             else{
128                                                 result= true ;
129                                  }
130                            }
131                 else{
132                     alert("some wrong,please try again!");
133                     result= false;
134                     }
135             }  
136         }); 
137         return result ;
138         }
139         },
140         computed:{
141         //存储当前编辑的对象,相当于一个实时检测,当前此刻处于编辑状态的对象是哪个
142         editArr:function(){
143             var editO={};
144             var index=0;
145             for(var i=0,len=this.manage.length;i<len;i++){
146               if(this.nowEditCol === this.manage[i]['id'] ){
147                 editO= this.manage[i];
148                 index=i;
149                 break;
150               }
151             }
152             return {
153                 'index':index,
154                 'id':editO.id,
155                 'name':editO.name,
156                 'url':editO.url,
157                 'comment':editO.comment,
158                 'class':editO.class
159             }
160         },
161         delArr:function(){//实时检测delId的值
162             var delO={};
163             var index=0;
164             for(var i=0,len=this.manage.length;i<len;i++){
165               if(this.delId === this.manage[i]['id'] ){
166                 delO= this.manage[i];
167                 index=i;
168                 break;
169               }
170             }
171             return {
172                 'index':index,
173                 'id':delO.id,
174                 'name':delO.name,
175                 'url':delO.url,
176                 'comment':delO.comment,
177                 'class':delO.class
178             }
179         }
180     }
181     })
182 </script>
vue部分

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-01
  • 2018-11-08
  • 2021-06-22
  • 2021-08-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-24
  • 2021-11-06
  • 2021-11-20
  • 2021-11-29
  • 2021-11-05
相关资源
相似解决方案