【问题标题】:How do i auto-refresh my log rather then refreshing it manually我如何自动刷新我的日志而不是手动刷新它
【发布时间】:2019-11-11 16:37:24
【问题描述】:

我目前有一个显示后端日志的日志框。我有一个按钮来刷新日志并显示最新的日志集。如何将其设置为自动刷新日志?

我有下面的按钮和开关盒代码

<div class="form-group row m-b-10">
  <label class="col-form-label">Auto-Refresh:</label>
  <div class="col-md">
    <div class="switcher switcher-success">
      <input type="checkbox" v-model="checked" name="switcher_checkbox_2" id="switcher_checkbox_2" checked="true" value="1" v-on:change="toggle">
      <label for="switcher_checkbox_2"></label>
    </div>
    <div class="switcher switcher-success">
      <button v-if="!checked" @click="logNode(namespace)" class="btn btn-xs btn-success">Refresh</button>
    </div>
  </div>

刷新按钮的功能如下。开关盒打开时如何调用日志自动刷新的函数?

logNode(namespace) {
  console.log(namespace)
  this.hidemodal = true;
  this.logShow = true;
  var requestobj = {
    Namespace: namespace,
  };
  var apiobj = {
    tablename: "bnm",
    Id: VueCookies.get("activeNetwork_Id"),
    method: "post"
  };
  var obj = {
    apiobj: apiobj,
    mainobj: requestobj
  };
  this.$store
    .dispatch("logsAPI", obj)
    .then(response => {
      console.log(response);
      console.log("test result");
      if (response.data || response.status == 200) {
        this.logString = response.data.Logstr;
        this.$notify({
          group: "querynotify",
          title: "Success",
          type: "success",
          position: "top-right",
          text: "Sucessfully Created Logs " + ":\n" + response.data.Username
        });
      } else {
        this.$notify({
          group: "querynotify",
          title: "Error",
          type: "warn",
          position: "top-right",
          text: "Error Creating Logs " + ":\n" + response.data.Username
        });
      }
    })
    .catch(error => {
      this.$notify({
        group: "querynotify",
        title: "Error",
        type: "error",
        position: "top-right",
        text: "Error View this node Log" +
          ":\n" +
          error.data.err +
          ":\n" +
          error.data.details
      });
    });
},

【问题讨论】:

    标签: node.js vue.js


    【解决方案1】:

    选中复选框时可以使用setInterval(),未选中复选框时可以使用clearInterval

    请检查下面的工作 sn-p。

    *Note 在这个 sn-p 中,我只是使用了简单的日志来进行演示。在那个演示中,您可以放置​​您的逻辑。

    new Vue({
      el: '#app',
      data: {
        checked: false,
        autoRef:null
      },
      methods: {
        toggle() {
          if(this.checked){
            this.autoRef = setInterval(() => {
              this.logNode('Auto refresh called');
            }, 3000);
          }else{
            clearInterval(this.autoRef);
          }
        },
        logNode(msg) {
          console.log(msg)
        }
      }
    });
    .btn-success {
      background: green;
      padding: 10px;
      border: 1px solid #ccc;
      color: #fff;
    }
    <link href="https://cdn.jsdelivr.net/npm/vuetify@1.2.2/dist/vuetify.min.css" rel="stylesheet" />
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vuetify@1.2.2/dist/vuetify.min.js"></script>
    
    <div id="app" class="form-group row m-b-10">
      <label class="col-form-label">Auto-Refresh:</label>
      <div class="col-md">
        <div class="switcher switcher-success">
          <input type="checkbox" v-model="checked" name="switcher_checkbox_2" id="switcher_checkbox_2" checked="true" value="1" v-on:change="toggle">
          <label for="switcher_checkbox_2"></label>
        </div>
        <div v-if="!checked" class="switcher switcher-success">
          <button ref="myButton" @click="logNode('on button click')" class="btn btn-xs btn-success">Refresh</button>
        </div>
      </div>

    【讨论】:

    • 有效!但是,如果我不关闭开关,在导航到其他页面时也会继续自动刷新.. 有什么选项可以关闭它吗?
    • @user6345655 会的,但在这种情况下,如果达到该限制,您可以设置某些条件,然后它将自动关闭。
    猜你喜欢
    • 2013-07-27
    • 2011-06-17
    • 1970-01-01
    • 2016-11-28
    • 2014-06-06
    • 2021-02-22
    • 2011-12-29
    • 2016-03-26
    • 1970-01-01
    相关资源
    最近更新 更多