【问题标题】:VueJS Simple Alert AppearVueJS 简单警报出现
【发布时间】:2017-07-27 03:42:48
【问题描述】:

有人可以帮我完成这个简单的警报吗?我想要的是,如果我单击触发按钮,文本会出现,但组件应该发挥作用。

我是新手,正在学习 VueJS,现在在组件部分,但我还没有完全掌握它。

这是链接:JSBIN

JS 脚本片段

Vue.component('alert', {
  template: '#alert',
    props: {
      errors:false
    },
    data: function() {
      return {
        message:""
      }
    },
    methods: {
      appear: function (status) {
        if(status=="yes") {
          errors = true;
          message = "Appeared";
        }
      }
    }
});

var myapp = new Vue({
  components: 'alert',
  el: '#app',
  data: {

  },
  methods: {
    trigger: function() {
      this.$alert.appear("yes");
    }
  }


});

【问题讨论】:

    标签: vue.js vuejs2 vue-component


    【解决方案1】:

    为了让您的代码按照我认为您试图让它工作的方式工作,我做了一些更改。

    模板

    <div id=app>
      <button @click="trigger">Trigger</button>
      <alert ref="alert"></alert>
    </div>
    

    代码

    Vue.component('alert', {
      template: '#alert',
        data: function() {
          return {
            message:"",
            errors: false
          }
        },
        methods: {
          appear: function (status) {
            if(status=="yes") {
              this.errors = true;
              this.message = "Appeared";
            }
          }
        }
    });
    
    var myapp = new Vue({
      components: 'alert',
      el: '#app',
      data: {
    
      },
      methods: {
        trigger: function() {
          this.$refs.alert.appear("yes");
        }
      }
    })
    

    这里是updated bin

    这是一种非常不典型的方式来做这种事情。这是一个更惯用的警报示例。

    Vue.component('alert', {
      props:["message","show"],
      template: '#alert',
    });
    
    var myapp = new Vue({
      el: '#app',
      data: {
        errors: false,
        errorMessage: null
      },
      methods: {
        trigger: function() {
          this.errors = true
          this.errorMessage = "Whoops!"
        }
      }
      
      
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.3/vue.js"></script>
    
      <div id=app>
        <button @click="trigger">Trigger</button>
        <alert :message="errorMessage" :show="errors"></alert>
      </div>
      
      <template id="alert">
        <div v-show="show">
          <div>{{ message }}</div>
        </div>
      </template>

    在第二个示例中,要在警报中显示的信息通过 properties 传递给警报组件,并且警报也通过属性触发。这就是你在 Vue 中通常会这样做的方式。

    【讨论】:

    • 如果我有一些我希望 javascript 处理而不是这样的自定义警报消息怎么办:。也许引导类用于样式和自定义消息的警报,我应该怎么做?
    • @KaySingian 我更新了第二个示例以展示您如何做到这一点。消息可以作为属性传入。至于样式,只需将类添加到组件中。如果你想做错误、信息、成功等,也许是第三个属性!
    猜你喜欢
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多