2017-10-02 9 views
0

내 vuex 보이는 같은 :Vuex 작업 잘못

state: { 
    loadedUsers: [ 
    { id: 10, classId: 1, name: 'X' }, 
    { id: 11, classId: 1, name: 'Y' }, 
    { id: 13, classId: 2, name: 'Z' } 
    ] 
} 
getters: { 
    loadedUsers (state) { 
    return (classId) => { 
     return state.loadedUsers.find((user) => { 
     return user.classId === classId 
     }) 
    } 
    } 
} 

내 계산 :

computed: { 
    users() { 
    return this.$store.getters.loadedUsers(1) 
    } 
} 

그것의 단지 반환 {ID : 10, CLASSID : 1, 이름 : 'X'}

도 좋아할 때 사용

this.$store.getters.loadedUsers(this.$route.params.classid) 

공백 반환

무엇이 문제 일 수 있습니까?

답변

1

Array.prototype.find()은 일치하는 첫 번째 요소의 값을 반환하기 때문입니다. 대신 Array.prototype.filter()을 사용해야합니다. 또한, 하나 개의 층으로 함수/메소드 호출 랩을 해제 할 수 있습니다

getters: { 
    loadedUsers (state) { 
    return classId => state.loadedUsers.filter((user) => { 
     return user.classId === classId 
    }) 
    } 
} 
+0

의 노력 덕분에 많은 .. – mak

+0

을 여전히 때문에 매개 변수 CLASSID의 빈 반환 - user.classId의 === 1을 반환 - 그게 작동 그러나 위의 것은 empty empty returns – mak

+0

@mak 그렇다면'this. $ route.params.classid'가 실제로 classID를 반환하는지 확인해야합니다. 그리고 만약 그렇다면, 당신은 정수 (즉, 수)로 구문 분석하고 있습니까? 왜냐하면 당신은'==='를 사용하여 엄격한 비교를하고 있기 때문입니다. – Terry