반응형
약속이 해결되면 데이터 속성 값 설정
내 앱에서는 Sequelize를 사용하여 mysql 백엔드에 연결해야 합니다.다음은 코드입니다.
export default {
data () {
return {
username:''
}
},
mounted () {
this.dbConnect()
},
methods: {
dbConnect : function () {
console.log("Test connecting to the database");
let connection = new Sequelize('mydatabase','root','12345' , {
host: '127.0.0.1',
dialect: 'mysql',
logging: console.log.bind(console)
});
var userGroup = connection.define('roles',{
name:Sequelize.STRING
},{ freezeTableName: true, timestamps : false})
userGroup.findById(1).then(function(group) {
this.username = group.get('name');
console.info('current username is :' + this.username);
})
}
}
}
모든 게 잘 되고 있어 그때가 되면만 빼고
this.username = group.get('name)
이미 렌더링된 UI가 해결됩니다.뷰에서 올바르게 업데이트되도록 데이터 속성을 업데이트할 수 있는 방법이 있습니까?
몇 가지 포인트
dbConnect : function () {
console.log("Test connecting to the database");
let connection = new Sequelize('mydatabase','root','12345' , {
host: '127.0.0.1',
dialect: 'mysql',
logging: console.log.bind(console)
});
var userGroup = connection.define('roles',{
name:Sequelize.STRING
},{ freezeTableName: true, timestamps : false})
userGroup.findById(1).then(function(group) {
this.username = group.get('name'); // [1]
console.info('current username is :' + this.username);
})
}
[1]에서 창 객체에 대한 속성 설정username
.
다음과 같은 방법으로 기능을 변경해야 합니다.
userGroup.findById(1).then((group) => {
this.username = group.get('name');
console.info('current username is :' + this.username);
})
또는 다음과 같은 변수를 설정할 수 있습니다.
let self = this
userGroup.findById(1).then(function(group) {
self.username = group.get('name');
console.info('current username is :' + self.username);
})
다른 요점은 비동기 호출에 vuex 액션을 사용하세요.
그mounted
라이프 사이클 훅은, 다음의 경우에 사용됩니다.Vue
인스턴스가 생성되어 각 인스턴스가el
컴포넌트는 교환 완료vm.$el
.
약속의 해결이 인스턴스의 시각적 렌더링 전에 완료되기까지 너무 오래 걸리는 경우, 약속의 해결을 의 이벤트로 다시 설정해 보십시오.created
후크. 외부 서비스를 사용하여 Vue 인스턴스를 위한 많은 사전 처리 및 데이터 수집을 수행하며 항상 잘 작동합니다.
그래서 대신...
mounted() {
this.dbConnect()
}
...그것을...에 넣어...
created() {
this.dbConnect()
}
갱신하다
연결이 확립되고 확약이 완료되면 Vue 인스턴스의 조건부 렌더링을 사용하여 전체 렌더링을 트리거할 수 있습니다.
HTML의 외부 요소에 대해서만 추가합니다.
<div v-if="!isProcessing">
<!-- contents -->
</div>
JS에 약간 추가:
export default {
data () {
return {
username:'',
isProcessing: true
}
},
mounted () {
this.dbConnect()
},
methods: {
dbConnect : function () {
console.log("Test connecting to the database");
let connection = new Sequelize('mydatabase','root','12345' , {
host: '127.0.0.1',
dialect: 'mysql',
logging: console.log.bind(console)
});
var userGroup = connection.define('roles',{
name:Sequelize.STRING
},{ freezeTableName: true, timestamps : false})
userGroup.findById(1).then((group) => {
this.username = group.get('name');
this.isProcessing = false;
console.info('current username is :' + this.username);
})
}
}
}
언급URL : https://stackoverflow.com/questions/42265673/set-the-data-property-value-when-the-promise-has-resolved
반응형
'IT이야기' 카테고리의 다른 글
하나의 플랫폼에서 모든 데이터 유형의 모든 데이터 포인터가 동일한 크기입니까? (0) | 2022.07.04 |
---|---|
"소프트웨어로 인해 연결이 중단되었습니다: 소켓 쓰기 오류"의 공식 이유 (0) | 2022.07.04 |
Vue 3 + vuex 스토어가 정의되지 않았습니다. (0) | 2022.07.04 |
Vuejs에 Jitsi Meet을 추가하는 방법 (0) | 2022.07.04 |
vue에서 상위 구성 요소 중 하위 구성 요소가 내보내는 이벤트에 가입했는지 확인하려면 어떻게 해야 합니까? (0) | 2022.07.04 |