Javascript Vue js应用程序未在应用程序内定义

Javascript Vue js应用程序未在应用程序内定义,javascript,vue.js,undefined,Javascript,Vue.js,Undefined,我在html页面的脚本标记中包含了vue 1.0.18 min.js specialText行不起作用 var tagApp; window.onload = function () { /* Vue Js App here */ tagApp = new Vue({ el: '#app', data: { title: 'Title', chars: [{ name: "Jarred", attack: 15,

我在html页面的脚本标记中包含了vue 1.0.18 min.js

specialText行不起作用

var tagApp;

window.onload = function () {
    /* Vue Js App here */
tagApp = new Vue({
  el: '#app',
  data: {
    title: 'Title',
    chars: [{
        name: "Jarred",
        attack: 15,
        health: 70,
        special: "Block",
        blockVal: 5,
        specialText: "Passive: Blocks "+ tagApp.chars[0].blockVal +" Damage." 
    // line above: here it doesn't work
    // gives: "can't get chars of undefined"
        }, {
            name: "John"
        }]
     } 
}); // close app
alert(tagApp.chars[0].blockVal); // here it works
getBlockVal(); // here it also works

} // close window.onload

function getBlockVal() {
    var arr = [{
        name: "henry",
        description: "blocks " + tagApp.chars[0].blockVal + " dmg."
    }];
    alert(arr[0].description);
}
我还尝试了specialText中的以下内容:

this.blockVal
提供未定义的

this.parent.blockVal
给出了未定义的

this.chars[0].blockVal
表示chars未定义

tagApp.chars[0]。blockVal
表示tagApp未定义


请提供帮助。

您不能直接在
数据
属性中更新值。使用
created
lifecyclehook方法更新数据对象

created: function(){
   this.chars[0].specialText = "Passive: Blocks "+ this.chars[0].blockVal +" Damage."
}

关于Vue.jsv1生命周期挂钩。您可以根据需要尝试附加其他生命周期挂钩

您不能直接在
数据
属性中更新值。使用
created
lifecyclehook方法更新数据对象

created: function(){
   this.chars[0].specialText = "Passive: Blocks "+ this.chars[0].blockVal +" Damage."
}

关于Vue.jsv1生命周期挂钩。您可以根据您的需求尝试附加其他生命周期挂钩

您不能在其定义中使用
tagApp.chars
对象,这就是它未定义的原因。从chars定义中删除行
tagApp.chars[0].blockVal
,一切正常。“如果变量的值仍有待定义,则不能使用该值”

如果运行以下代码,它将正常工作:

var tagApp;

window.onload = function () {
    /* Vue Js App here */
tagApp = new Vue({
  el: '#app',
  data: {
    title: 'Title',
    chars: [{
        name: "Jarred",
        attack: 15,
        health: 70,
        special: "Block",
        blockVal: 5,
        specialText: "Passive: Blocks " + " Damage." 
    // line above: here it doesn't work
    // gives: "can't get chars of undefined"
        }, {
            name: "John"
        }]
     } 
}); // close app
alert(tagApp.chars[0].blockVal); // here it works
getBlockVal(); // here it also works

} // close window.onload

function getBlockVal() {
    var arr = [{
        name: "henry",
        description: "blocks " + tagApp.chars[0].blockVal + " dmg."
    }];
    alert(arr[0].description);
}

不能在其定义中使用
tagApp.chars
对象,这就是它未定义的原因。从chars定义中删除行
tagApp.chars[0].blockVal
,一切正常。“如果变量的值仍有待定义,则不能使用该值”

如果运行以下代码,它将正常工作:

var tagApp;

window.onload = function () {
    /* Vue Js App here */
tagApp = new Vue({
  el: '#app',
  data: {
    title: 'Title',
    chars: [{
        name: "Jarred",
        attack: 15,
        health: 70,
        special: "Block",
        blockVal: 5,
        specialText: "Passive: Blocks " + " Damage." 
    // line above: here it doesn't work
    // gives: "can't get chars of undefined"
        }, {
            name: "John"
        }]
     } 
}); // close app
alert(tagApp.chars[0].blockVal); // here it works
getBlockVal(); // here it also works

} // close window.onload

function getBlockVal() {
    var arr = [{
        name: "henry",
        description: "blocks " + tagApp.chars[0].blockVal + " dmg."
    }];
    alert(arr[0].description);
}

好啊谢谢我现在在应用程序之外定义了blockVal,并将其包含在specialText中。这样行,好的。谢谢我现在在应用程序之外定义了blockVal,并将其包含在specialText中。这行得通,这行得通。谢谢但是当我更改blockVal时,specialText仍然使用旧的blockVal值,因为created只调用它一次。因此,我添加了一个方法来更新specialText,它很有效。谢谢但是当我更改blockVal时,specialText仍然使用旧的blockVal值,因为created只调用它一次。因此,我添加了一个方法来更新specialText,它可以正常工作。