Vue.js組件


Vue.js組件中的data與methods

  例如:

  Vue.component('mycom',{

    template:"#temp",

      data(){

        retrun{

          msg:'組件中的data數據定義'

    }

   }

  })

    組件中的data如果像Vue實例那樣傳人一個對象,由於JavaSeript中的對象類 型變量實際上保存的是對象的引用,所以當存在多個這樣的組件時會共享數據,導致一個組件中

據的改變會引起其他組件數據的改變。

而使用一個返回對象的函數,每次使用組件都會創建一個新的對象, 這樣就不會出現共享數據的問題。

    (2) Vue.js提供<component組件,在該組件中使用v-bind指令搭配is屬性來展示對應名稱的 組件,即component是一 個 占位符,“:is" 屬性可以指定要展示組件的名稱,其

切換代碼如下所示: 

    <component v-bind:is="切換組件的名稱"></component>

簡寫形式如下:

    component :is=" 切換組件的名稱"></component>

 

組件之間傳值
  Vue, is的組件傳值有兩種方式:父組件傳數據給子組件,子組件傳數據給父組件。一般父組件通過props屬性給子組件下發數據,子組件通過事件給父組件發送消息。
1.父組件傳數據給子組件
當子組件在父組件中當作標簽使用的時候,給子組件定義一個自定義屬性,屬性值為想要 傳遞的數據。在子組件中通過props屬性進行接收。特別強調的是,props是專門 ]用來接收外部數據的,該屬性有兩種接收方式,分別是數組和對象,其中對象可以限制數據的類型。
  父組件向子組件傳遞數據的時候,子組件不允許更改父組件的數據,因為父組件會向多個子組件傳值,如果某個子組件對父組件的數據進行修改,很有可能導致其他的組件發生錯誤,而且很難對數據的錯誤進行捕捉。
  在子組件中默認無法訪問到父組件中的數據和methods方法,但可以在引用子組件時,通 過屬性綁定( v-bind: )形式把需要傳遞給子組件的數據進行下發,以供子組件使用。在子組件中把父組件傳遞過來的data數據在props數組中進行定義,然后才能使用這個數據。需要特別說明的是,組件中所有props的數據都是通過父組件傳遞給子組件的,所以props的數據都是只讀的,無法重新賦值。
 2.子組件傳數據給父組件
  如果子組件需要給父組件傳遞數據,需要在子組件中定義一一個自定義事件, 事件名稱不需要加括號。在子組件中通過this.$emit觸發自定義事件,將需要傳遞的參數通過emit的第二個參數傳遞。


自定義指令

  語法格式:Vue.directive('自定義指令名',{})

    全局自定義指令:     

      <script> 
        Vue.directive('focus',{
            inserted:function(el){
              el.focus()
              el.value="獲取焦點"
            }
          })
              new Vue({
                el:"#app"
              })
      </script>

局部自定義

        <script> 
          new Vue({
            el:"#app",
            directives:{
               focus:{
                inserted:function(el){
                  el.focus()
                  el.value="獲取焦點"
              }
          }
        }
      })

鈎子函數bind的引用   

    Vue.directive('runoob',{
        bind:function(el,binding,vnode){
            var s=JSON.stringify
            el.innerHTML='鈎子函數bind中各個參數的取值:<br/>'+
              '<b>name:</b>' +s(binding.name)+'<br/>'+
              '<b>value:</b>' +s(binding.value)+'<br/>'+
              '<b>expression:</b>' +s(binding.expression)+'<br/>'+
              '<b>argument:</b>' +s(binding.arg)+'<br/>'+
              '<b>modifiers:</b>' +s(binding.modifiers)+'<br/>'+
              '<b>vnode keys:</b>' +Object.keys(vnode).join(',')
            }
        })

 

 

實操制作高校網站首頁

    了解網站創建流程 

    網站的制作步驟

      1、網站策划

      2、網站素材收集

      3、網站規划

      4、網站目錄設計

      5、網站制作

遇到一個問題,制作模態框時,點擊按鈕模態框彈出,彈出后因為遮罩添加的父節點是body,把div覆蓋了。導致遮罩擋在了最前面,無法進行操作。

解決辦法是

    添加一個data-backdrop="false" 取消自動添加遮罩。

使用js代碼實現如下
  $('.modal-open').find('.modal-backdrop').remove();
因為遮擋主要是modal-backdrop類導致的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM