vuejs实现ready函数加载完之后执行某个函数的方法
程序员文章站
2023-10-23 21:53:49
vue.js 教程
vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。
vue 只关注视图层, 采用自底向上增量开发的设...
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函数加载完之后执行某个函数的方法,希望对大家有所帮助