在以下代码中:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class YourService {
// Your service logic goes here
}
new Vue({
el: '#app',
computed: {
myMessage: function() {
return "hello";
}
},
data: {
message: this.myMessage
},
mounted: function() {
console.log(this.myMessage);
}
})
https://jsfiddle.net/hk49eL38/
如果我替换:
<script src="https://unpkg.com/vue"></script>
<div id="app">
<p>{{ message }}</p>
</div>
带有字符串(例如“ Hello world”),它可以正确呈现。
但是当我使用this.myMessage
时,不会显示任何文本。
这是为什么?
答案 0 :(得分:5)
问题是您试图将计算所得的属性用作message
数据属性的初始值。
当Vue内部调用data
函数时,尚未对计算的属性进行求值,这是在created
钩子之前很早完成的。
如果您尝试将计算属性的值记录在beforeCreated
钩子(第一个生命周期钩子)中,而不是示例中的mounted
,您将看到它是{ {1}}。
(*)为简洁起见裁剪图
在上图中的“初始进样和反应性” 步骤中评估计算出的特性。
计算的属性值不能用作undefined
属性的初始值,通常它们取决于data
属性值以及其他外部和反应性值(例如Vuex吸气剂,Vue路由器参数,等)。
答案 1 :(得分:2)
您不应该在编写this
之前使用myMessage
,因为VueJS不能那样工作。它已经考虑了this
上下文中的所有内容。您应该这样:
<script src="https://unpkg.com/vue"></script>
<div id="app">
<p>{{ myMessage }}</p>
</div>
答案 2 :(得分:-1)
尝试在安装组件时将 myMesssage 的值设置为消息。
mounted: function() {
this.message = this.myMessage
}
答案 3 :(得分:-2)
尝试在计算出的我的消息中更改数据消息