网络编程
位置:首页>> 网络编程>> JavaScript>> vuejs实现ready函数加载完之后执行某个函数的方法

vuejs实现ready函数加载完之后执行某个函数的方法

作者:huanghanqian  发布时间:2024-05-29 22:48:43 

标签:vuejs,ready,加载

vue.js 教程

Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。
Vue 只关注视图层, 采用自底向上增量开发的设计。
Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

我期望vue中tds全都渲染在界面上之后,再调用一个函数(其实这个函数主要作用是给表格中的选择框加监听,如果tds没有渲染,那监听也加不上去)。


<div class="row" id="app">
 <div class="col-sm-12 col-md-12 main">
  <table class="table table-bordered table-striped">
   <thead>
   <tr>
    <th><input type="checkbox" id="checkAll" name="checkAll" /></th>
    <th>日期</th>
    <th>任务</th>
    <th>是否执行</th>
    <th>执行结果</th>
    <th>影响行数</th>
    <th>执行时间</th>
    <th>执行时长</th>
    <th>成功率</th>
    <th>操作</th>
   </tr>
   </thead>
   <tbody id="trs">
   <tr v-for="td in tds">
    <td><input type="checkbox" name="checkItem" /></td>
    <td>{{td.date}}</td>
    <td>{{td.job}}</td>
    <td>{{td.is_done==0?'未执行':'已执行'}}</td>
    <td>{{td.is_success==0?'成功':(td.is_success==1?'失败':'')}}</td>
    <td>{{td.nums}}</td>
    <td>{{td.begintime}}</td>
    <td>{{td.usedtime}}</td>
    <td>{{td.rate}}</td>
    <td v-if="td.is_done==0">
    </td>
    <td v-if="td.is_done==1">
     <button v-on:click="rerun($index,td.monitor_id)" type="button" class="btn btn-default btn-xs"
       style="padding:1px 10px;margin-top:-3px;margin-bottom:-2px;">重跑
     </button>
    </td>
   </tr>
   </tbody>
  </table>
 </div>
 <!--/.main -->
</div>

尝试了


Vue.nextTick(function () {
alert('new message'); // true
})

无效,在tds未展示在界面上时就alert了。

尝试了


vm.$nextTick(function () {
alert('new message'); // true
})

也无效,在tds未展示在界面上时就alert了。

最后解决办法是增加一个vm.$watch('tds',function(val){ })函数,在vm改变后调用nextTick,最终可以在tds展示在界面之后调用我想要的函数。


var vm = new Vue({
 el: '#app',
 ready: function () {
  $.getJSON("/main/getMonitor", {"beginDate": getTheDate(-2), "endDate": getTheDate(0)}, function (result) {
   vm.$set('tds', result);
  });
 },
 data: {
  start: getTheDate(-2),
  end: getTheDate(0),
  isupdate: 0
 },
// computed: {
// // 一个计算属性的 getter
// tds: function () {
//  var myr="";
//  $.getJSON("/main/getMonitor", {"beginDate": getTheDate(-2),"endDate": getTheDate(0)}, function (result) {
//  myr= result;
//  });
//  return myr;
// }
// },
 methods: {
  rerun: function (index, monitor_id) {
   var button = $('#trs').children().eq(index).children().eq(9).children().eq(0);
   button.prop('disabled', true);
   button.html('重跑中<span class="dotting"></span>');
//    $.getJSON("http://m.o2.qq.com/Api/rerunMonitor", {"monitorID": monitor_id}, function (result) {
//     console.log(result);
//     vm.isupdate=(this.isupdate==0?1:0);
//     button.html('重跑');
//     button.prop('disabled', false);
//    });
   $.ajax({
    url: "http://m.o2.qq.com/Api/rerunMonitor",
    // The name of the callback parameter, as specified by the YQL service
    jsonp: "callback",
    // Tell jQuery we're expecting JSONP
    dataType: "jsonp",
    // Tell YQL what we want and that we want JSON
    data: {
     monitorID: monitor_id
    },
    // Work with the response
    success: function (response) {
     console.log(response); // server response
     vm.isupdate = (vm.isupdate == 0 ? 1 : 0);
     button.html('重跑');
     button.prop('disabled', false);
    }
   });
  }
 }
})
vm.$watch('start', function (val) {
 $.getJSON("/main/getMonitor", {"beginDate": val, "endDate": this.end}, function (result) {
  vm.tds = result;
 });
})
vm.$watch('end', function (val) {
 $.getJSON("/main/getMonitor", {"beginDate": this.start, "endDate": val}, function (result) {
  vm.tds = result;
 });
})
vm.$watch('isupdate', function (val) {
 $.getJSON("/main/getMonitor", {"beginDate": this.start, "endDate": this.end}, function (result) {
  vm.tds = result;
 });
})
vm.$watch('tds',function(val){
 vm.$nextTick(function() {
  initTableCheckbox();
 });
})

总结

以上所述是小编给大家介绍的vuejs实现ready函数加载完之后执行某个函数的方法网站的支持!

来源:https://blog.csdn.net/huanghanqian/article/details/52937483

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com