如何让vuejs中ready函数加载完之后执行某个函数?
我期望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();
});
})
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: php获取毫秒时间戳
- 下一篇:没有了
