首页 > 编程 > JavaScript > 正文

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

2019-11-19 13:05:05
字体:
来源:转载
供稿:网友

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函数加载完之后执行某个函数的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表