Vuejs2 vuejs中的函数正在执行多次

Vuejs2 vuejs中的函数正在执行多次,vuejs2,Vuejs2,我是vuejs的初学者, 在我的模板中,我想显示在另一个数组管理器[]中定义的楼层管理器,因此我使用的是函数而不是变量。 但是这个函数运行了三次,我不知道为什么 这是我的模板 <div class="user-information containt-box shadow"> <div class="row mb-5"> <div class="col-sm-6"> <h4>Basic Informatio

我是vuejs的初学者, 在我的模板中,我想显示在另一个数组管理器[]中定义的楼层管理器,因此我使用的是函数而不是变量。 但是这个函数运行了三次,我不知道为什么

这是我的模板

<div class="user-information containt-box shadow">
    <div class="row mb-5">

        <div class="col-sm-6">
        <h4>Basic Information</h4>
        <div class="user-search-result-table mt-5">
            <div class="form-detail no-gutters row">
            <strong class="label col-sm-5">Floor Manager: </strong>
            <span class="value col-sm-7">{{floorManager()}}</span>
            </div>


如果有更好的方法,请告诉我。提前感谢。

每次
此操作发生变化时,都会对该功能进行评估。
。该值必须在代码的其他部分发生变化

而且

使用
find
而不是
filter
。返回的值将不是数组


如果这不是计算属性方法,则应该是。将其移动到
computed
部分,并从模板中删除
()

尝试使用计算属性,而不是方法。(只需从方法中拉出该函数,并将其粘贴到computed下即可)

在模板中,只需替换对getter(属性名)的方法调用

。。。
楼层经理:
{{floorManager}}
...

我以这样的预防措施结束

floorManager() {
            let floorManager = this.managers.filter(event => {
                return event.id == this.floor.manager_id;
            })
            if(floorManager.length>0)
            return floorManager[0].first_name + ' ' + 
floorManager[0].last_name;
            else
            return '';
        }
通过使用computed属性,它只执行一次

computed: {
    hloorManager(){
       let  floorManager= this.managers.find(event => {
       return event.id == this.manager_id;      
       })
      console.log('qse');
      return floorManager.first_name+' ' + floorManager.last_name;
  },
  ...
}

但仍然无法读取未定义的属性“first_name”

Hello。在您的情况下,应该使用computed属性。它不应该重复多次。作为旁注,最好使用Array.find来查找元素,而不是Array.filter,即使在找到一个元素之后,它也会覆盖所有元素。如果我想多次使用该属性,如何将参数传递给该属性。请告诉我为什么方法会执行多次。感谢您无法在内部计算管理器数组和管理器id,安装时由axios分配给它们的值
  ...
  <strong class="label col-sm-5">Floor Manager: </strong>
  <span class="value col-sm-7">{{floorManager}}</span>
  ...
floorManager() {
            let floorManager = this.managers.filter(event => {
                return event.id == this.floor.manager_id;
            })
            if(floorManager.length>0)
            return floorManager[0].first_name + ' ' + 
floorManager[0].last_name;
            else
            return '';
        }
computed: {
    hloorManager(){
       let  floorManager= this.managers.find(event => {
       return event.id == this.manager_id;      
       })
      console.log('qse');
      return floorManager.first_name+' ' + floorManager.last_name;
  },
  ...
}