2017-08-21 58 views
1

我已将vue 1.0.18 min.js包含在html页面的脚本标记中。Vue 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说明字符是未定义的。

tagApp.chars[0].blockVal说tagApp是未定义的。

请帮忙。

回答

-2

您无法直接在data属性中更新值。使用created生命周期挂钩的方法来更新数据对象,

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

关于Vue.js V1生命周期挂钩,https://v1.vuejs.org/guide/instance.html#Lifecycle-Diagram。您可以尝试附加其他生命周期挂钩取决于您的要求

+1

这工作。谢谢!但是,当我改变blockVal,specialText仍然使用旧的blockVal值,因为创建只调用一次。所以我添加了一个方法来更新specialText,它的工作原理。 – MathewT

+0

太棒了!不知道为什么人们低估了我的答案。 –

0

您不能在其定义中使用tagApp.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); 
} 
+1

好的。谢谢。我现在在应用程序外部定义了blockVal并将其包含在specialText中。这工作。 – MathewT

相关问题