[ভ্যু সতর্কতা]: সম্পত্তি বা পদ্ধতি উদাহরণ হিসাবে সংজ্ঞায়িত করা হয় না তবে রেন্ডার সময় উল্লেখ করা হয়


95
var MainTable = Vue.extend({
  template: "<ul>" +
    "<li v-for='(set,index) in settings'>" +
    "{{index}}) " +
    "{{set.title}}" +
    "<button @click='changeSetting(index)'> Info </button>" +
    "</li>" +
    "</ul>",
  data: function() {
    return data;
  }
});

Vue.component("main-table", MainTable);

data.settingsSelected = {};
var app = new Vue({
  el: "#settings",
  data: data,
  methods: {
    changeSetting: function(index) {
      data.settingsSelected = data.settings[index];
    }
  }
});

উপরের কোড সহ, বোতামটি ক্লিক করা হলে নীচের ত্রুটি ঘটে।

[ভ্যু সতর্কতা]: সম্পত্তি বা পদ্ধতি "চেঞ্জসেটিং" উদাহরণটিতে সংজ্ঞায়িত করা হয় না তবে রেন্ডার সময় উল্লেখ করা হয়। ডেটা বিকল্পে প্রতিক্রিয়াশীল ডেটা বৈশিষ্ট্যগুলি ঘোষণা করার বিষয়টি নিশ্চিত করুন। (পাওয়া গেছে <MainTable>)


আপনার ভুয়ে সংজ্ঞায়িত পদ্ধতিতে আপনার উপাদানটির অ্যাক্সেস নেই। আপনি পদ্ধতি যোগ করতে হবে changeSettingকরতে MainTableঅংশটি।
বার্ট

উত্তর:


95

সমস্যা

[Vue warn]: Property or method "changeSetting" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. (found in <MainTable>)

ত্রুটি ঘটছে কারণ changeSettingপদ্ধতিটি MainTableএখানে উপাদানটিতে উল্লেখ করা হচ্ছে :

    "<button @click='changeSetting(index)'> Info </button>" +

তবে changeSettingপদ্ধতিটি MainTableউপাদানটিতে সংজ্ঞায়িত করা হয়নি । এটি এখানে মূল উপাদানটিতে সংজ্ঞায়িত করা হচ্ছে:

var app = new Vue({
  el: "#settings",
  data: data,
  methods: {
    changeSetting: function(index) {
      data.settingsSelected = data.settings[index];
    }
  }
});

যা মনে রাখা দরকার তা হ'ল বৈশিষ্ট্য এবং পদ্ধতিগুলি কেবলমাত্র সেই ক্ষেত্রগুলিতেই সংজ্ঞায়িত করা যেতে পারে যেখানে সেগুলি সংজ্ঞায়িত করা হয়।

প্যারেন্ট টেমপ্লেটের সমস্ত কিছু প্যারেন্ট স্কোপেই সংকলিত হয়; চাইল্ড টেমপ্লেটের সমস্ত কিছুই সন্তানের সুযোগে সংকলিত।

আপনি ভয়ের ডকুমেন্টেশনে উপাদান সংকলনের সুযোগ সম্পর্কে আরও পড়তে পারেন ।

আমি এটি সম্পর্কে কি করতে পারি?

এখনও পর্যন্ত সঠিক সুযোগে জিনিসগুলি সংজ্ঞায়িত করার বিষয়ে অনেক কথাবার্তা হয়েছে তাই ফিক্সটি কেবল changeSettingসংজ্ঞাটিকে MainTableউপাদানটিতে স্থানান্তরিত করতে হবে ?

এটি সহজ বলে মনে হচ্ছে তবে আমি যা প্রস্তাব করি তা এখানে।

আপনি সম্ভবত চান আপনার MainTableউপাদানটি বোবা / উপস্থাপক উপাদান হয়ে উঠুক। ( এখানে পড়ার মতো এমন কিছু বিষয় যা আপনি যদি না জানেন তবে এটি কী টিএল; ড। হ'ল উপাদানটি কোনও কিছু সরবরাহের জন্য কেবল দায়ী - কোনও যুক্তি নেই)। যুক্তিটির জন্য স্মার্ট / ধারক উপাদান দায়ী - আপনার প্রশ্নে দেওয়া উদাহরণে মূল উপাদানটি হবে স্মার্ট / ধারক উপাদান। এই আর্কিটেকচারের সাহায্যে উপাদানগুলি ইন্টারঅ্যাক্ট করার জন্য আপনি ভিউর পিতামাতার-শিশু যোগাযোগের পদ্ধতিগুলি ব্যবহার করতে পারেন। আপনি প্রপসেরMainTable মাধ্যমে ডেটা নীচে দিয়ে দিন এবং ইভেন্টগুলির মাধ্যমে এর ক্রিয়াকলাপ থেকে ব্যবহারকারীর ক্রিয়াগুলি প্রেরণ করেন । এটি দেখতে এরকম কিছু দেখাচ্ছে:MainTable

Vue.component('main-table', {
  template: "<ul>" +
    "<li v-for='(set, index) in settings'>" +
    "{{index}}) " +
    "{{set.title}}" +
    "<button @click='changeSetting(index)'> Info </button>" +
    "</li>" +
    "</ul>",
  props: ['settings'],
  methods: {
    changeSetting(value) {
      this.$emit('change', value);
    },
  },
});


var app = new Vue({
  el: '#settings',
  template: '<main-table :settings="data.settings" @change="changeSetting"></main-table>',
  data: data,
  methods: {
    changeSetting(value) {
      // Handle changeSetting
    },
  },
}),

উপরোক্তগুলি আপনাকে কী করতে হবে এবং আপনার সমস্যা সমাধানের জন্য কিকস্টার্ট সম্পর্কে একটি ভাল ধারণা দেওয়ার জন্য যথেষ্ট হওয়া উচিত।


4
এটি কি বর্তমানে সবচেয়ে পছন্দের পদ্ধতির? বিষয়গুলি ভ্যুতে অনেক বিকশিত হতে থাকে তাই আমি যদিও জিজ্ঞাসা করতাম
আসিম

18

আমার যে একই নির্বোধ সমস্যাটি ছিল সেটির সাথে যদি কেউ অবতরণ করে তবে নিশ্চিত হয়ে নিন যে আপনার উপাদানটির ' ডেটা ' সম্পত্তিটি সঠিকভাবে বানান করেছে। (যেমন , ডেটা এবং তারিখ নয় )

<template>
    <span>{{name}}</span>
</template>

<script>
export default {
  name: "MyComponent",
  data() {
    return {
      name: ""
    };
  }
</script>

4
ভাই গম্ভীরভাবে, আমি গুরুত্ব সহকারে ধন্যবাদ
ননি

4
2020-এ আমি এখানে লিখেছিলাম, আমি
তারিখটি

lmfao এই মন্তব্যটি কেবল আমাকে বাঁচিয়েছে
ক্রিস রাভাজ্জানো

আপনি যখন নিজের সম্পত্তির নাম ভুল বানান করেন এটি একই ত্রুটি ছুঁড়ে দেয়। আমার জন্য এটি ঘটেছিল কারণ আমি datasটেমপ্লেটে বহুবচন ব্যবহার করেছি ।
টটিমেডলি


4

এটি সম্ভবত বানান ত্রুটির কারণে হয়েছে

স্ক্রিপ্ট ক্লোজিং ট্যাগে আমি একটি টাইপো পেয়েছি

</sscript>

3

যদি আপনি দু'বার অপরিহার্য উদাহরণ ব্যবহার করেন। তাহলে এটি আপনাকে এই ত্রুটি দেবে। উদাহরণস্বরূপ app.js এ এবং ফাইলটিতে আপনার নিজের স্ক্রিপ্ট ট্যাগ script শুধু একবার ব্যবহার করুন

 const app = new Vue({
    el: '#app',
});

2

আমার বিটটিও যুক্ত করা, আমার মতো যে কেউ লড়াই করা উচিত, লক্ষ্য করুন যে পদ্ধতিগুলি একটি কেস-সংবেদনশীল শব্দ:

<template>
    <span>{{name}}</span>
</template>

<script>
export default {
  name: "MyComponent",
  Methods: {
      name() {return '';}
  }
</script>

'পদ্ধতি' 'পদ্ধতি' হওয়া উচিত


2

এটি সম্ভবত সংরক্ষিত ভয়েজ ভেরিয়েবলের একটি বানান ত্রুটি। আমি এখানে এসেছি কারণ আমি ভুল বানান করেছিলাম computed:এবং ভয়েজগণ আমার গণিত সম্পত্তি ভেরিয়েবলগুলি চিনতে পারে না। সুতরাং আপনার যদি এর মতো ত্রুটি থাকে তবে প্রথমে আপনার বানানটি পরীক্ষা করুন!


2

ইনস্ট্যান্টেশন চলাকালীন যখন আমি কোনও রাজ্যের সম্পত্তিতে একটি উপাদান সম্পত্তি অর্পণ করার চেষ্টা করেছি তখন আমি এই ত্রুটিটি পেয়েছি

export default {
 props: ['value1'],
 data() {
  return {
   value2: this.value1 // throws the error
   }
  }, 
 created(){
  this.value2 = this.value1 // safe
 }
}

2

আমার কাছে তা থাকত দুই methods:মধ্যে <script>দেখাতে যায়, যে আপনি ঘন্টা ব্যয় করতে পারেন এমন কিছু বিষয় যা যেমন একটি সহজ ভুল ছিল খুঁজছেন।


2

আমার সমস্যাটি ছিল আমি আমার ডেটা অবজেক্টের ভিতরে পদ্ধতিগুলি রাখছিলাম। কেবল এটির মতো বিন্যাস করুন এবং এটি দুর্দান্তভাবে কাজ করবে।

<script>
module.exports = {
    data: () => {
        return {
            name: ""
        }
    },
    methods: {
        myFunc() {
            // code
        }
    }
}
</script>

2

আপনি যদি এই সমস্যাটি ভোগ করে থাকেন তবে নিশ্চিত হয়ে নিন যে আপনার নেই

methods: {
...
}

বা

computed: {
...
}

দুবার ঘোষিত


1

আমার ক্ষেত্রে এটি এমন সম্পত্তি যা আমাকে ত্রুটি দিয়েছে, সঠিক লেখা এবং তবুও আমাকে কনসোলে ত্রুটি দিয়েছে। যতক্ষণ না আমি তাকে Ctrl + F5 এবং Voilá না দিয়েছি ততক্ষণ আমি অনেক অনুসন্ধান করেছি এবং আমার পক্ষে কিছুই কাজ করে না! ত্রুটি সরানো হয়েছে। : 'ভি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.