我在sub("\\s+\\+\\s+\\(.*", "", bla)
#[1] "pseudoy ~ x1 + x2 + x3 + x4 + x5 + x6"
应用程序中显示分页符。
vue.js
但我收到错误:
<div class="Message__body__message">
<p v-for="line in message.message.split('\n')" track-by="$index">{{ line }}<br></p>
</div>
但main.js:7382 [Vue warn]: Error when evaluating expression "message.message.split('\n')": TypeError: Cannot read property 'split' of undefined
不是空的!我甚至收到了预期的结果,为什么会抛出这个错误?
答案 0 :(得分:1)
我甚至收到了预期的结果,为什么会抛出这个错误?
因为在某个阶段, undefined
。显然,如果你最终得到了你期望的结果,那么它就会被定义,但是那会更晚。
您可以通过以下方式解决:
v-for="line in (message.message || "").split('\n')"
...但最好还是更好地了解该代码所做的事情并找出为什么message.message
undefined
有时var vm = new Vue({
// ...your other stuff here...
// Computed properties:
computed: {
messageLines: function() {
return (this.message.message || "").split("\n");
}
}
});
正在尝试评估那个。
当Bill Criswell指出in a comment时,您可能会考虑在模型上使用computed property而不是模板内表达式。 E.g:
v-for="line in messageLines"
然后
f2()
答案 1 :(得分:1)
页面首次加载或message.message更改时的视图加载。
我相信您以错误的方式使用vue数据。
data: function(){
return {
message: {}
}
}
显然,您已在数据中定义了消息属性,但未定义message.message。所以第一次加载时,消息仍然是空的,它仍然没有得到你的ajax响应,所以它告诉message.message是未定义的。您应该将其更改为此,使用嵌套属性来设置合法值。
data: function(){
return {
message: {message: ''}
}
}
您应该了解视图至少渲染2次,第一次使用您在数据中设置的默认值,其他时间更改消息,在ajax回调或其他情况下。
答案 2 :(得分:1)
message.message可能不可用。请求vue尝试仅在message.message可用时加载message.message。 以下对我有用。
<div class="Message__body__message" v-if="message.message">
<p v-for="line in message.message.split('\n')" track-by="$index">{{ line }}<br></p> </div>