VueJS将数据从一个组件共享到另一个组件时出错

时间:2017-04-17 15:28:23

标签: javascript vue.js single-page-application

我在VueJS应用程序中遇到了一些错误。 IMG - http://prntscr.com/exh499 我理解存在错误,因为在从Weather JSON加载数据之前,country属性不存在,但是删除此错误的方法是什么。也高于[Vue warn]:

这是GitHub的回购,还有一些代码,所以我不确定你是否可以在这里阅读。 https://github.com/DenisLapi/weather-app

如果我在组件1中编辑该属性(我是usign $ emit),但是当我在组件2中定义属性值然后在组件1中编辑该属性时,如何在组件2中查找某些属性的更改$ emit和props []似乎在组件2中没有更新值

[Vue warn]: Error in render function : (found in <SearchResult> at C:\Users\denis\Desktop\weatherapp\src\components\Result.vue)
TypeError: Cannot read property 'country' of undefined

2 个答案:

答案 0 :(得分:1)

var game = new Phaser.Game(500, 200, Phaser.Auto, '', { preload: preload, create: create, update: update } ); function preload() { game.load.image('tank', 'assets/tank.png') game.load.image('tankEnemy', 'assets/tankEnemy.png') } function create() { game.stage.backgroundColor = '#3598db' game.physics.startSystem(Phaser.Physics.ARCADE); game.world.enableBody = true; this.cursor = game.input.keyboard.createCursorKeys(); this.tank = game.add.image(200, 75, 'tank') this.enemy = game.add.image(0, 0, 'tankEnemy') } function update() { if (this.cursor.left.isDown) { this.tank.position.x -= 3; } else if (this.cursor.right.isDown) { this.tank.position.x += 3; } else if (this.cursor.up.isDown) { this.tank.position.y -= 3; } else if (this.cursor.down.isDown) { this.tank.position.y += 3; } enemyMovement(); } function enemyMovement() { enemy.position.x += 3; //how can I access 'enemy' from above? } 未定义,这很好,但是citydata.foo是一个错误,因为您试图让citydata.foo.bar关闭bar

您应该使用undefined使用citydata来包装所有内容,因为它是异步的。

v-if

答案 1 :(得分:0)

编辑:摆弄一个有效的例子https://jsfiddle.net/wostex/63t082p2/24/

顺便说一句,JSON输出中没有'country'属性:example

你可以

  1. 设置道具的default值:https://vuejs.org/v2/guide/components.html#Prop-Validation

  2. 在模板中使用它们之前检查属性存在(内容块上v-if

  3. 关于道具变化的反应:使用取决于道具价值的computed property,甚至是watch道具变化:https://vuejs.org/v2/guide/computed.html#Watchers(这取决于您的需求)