kintone의 상세 화면이 열릴 때 필드의 값을 변경하고 싶습니다.
7873 단어 자바스크립트kintoneRestApi금과
🤔 상세 화면 열 때 필드 값을 변경하고 싶습니다.
🤔「편집 화면이 아니고, 상세 화면에서 필드의 값을 바꾸고 싶은데, 변하지 않습니다!
어디를 바꾸면 좋을까! ?
작성한 코드는 이것입니다. "
// レコード詳細画面表示後
kintone.events.on(
["app.record.detail.show"],
(event) => {
const record = event.record;
console.log("変更前", record.会社名.value);
record.会社名.value = "テスト";
console.log("変更後", record.会社名.value);
return event;
}
);
🙄「아~~. 이건・・・
🤔「하지만 콘솔에서 확인하면 record.회사명.value의 값은 바뀌고 있어요👀」
↓콘솔로 확인하면 내부적으로는 「테스트」로 바뀌고 있지만
↓상세 화면의 회사명은 변하지 않는다.
상세 화면에서는 event.record 변경해도 표시에 반영되지 않습니다!
event.record.フィールドコード.value = "何らかの値";
return event;
그래서 솔직하게 값이 바뀌는 것은
「레코드 추가 화면의 표시 후 이벤트」와 「레코드 편집 화면의 표시 후 이벤트」와 「레코드 일람 화면의 인라인 편집 필드 값 변경시 이벤트」입니다.
그럼, 「상세 화면」에서는 어떻게 하면 좋을까👀
💡 외형만 변경하면 된다면
필드의 값으로서는 덮어쓰기 보존하지 않아도 되고, 상세 화면을 열 때에 외형만 바뀌어 주면 좋다!
라고 하는 경우는 아래와 같이 DOM 조작해 변경하면 좋다고 생각합니다.
kintone.app.record.getFieldElement("会社名").textContent= "テスト";
💡 필드의 값별로 업데이트하고 싶은 경우
상세 화면을 열 때 최신 값으로 업데이트하고 싶습니다!
그렇다면 아래와 같이 kintone REST API
를 사용하여 업데이트해야합니다.
그렇지만 「상세 화면을 열 때마다 갱신」이라고 하는 것은 즉, 「상세 화면을 열지 않으면 평생 갱신되지 않는 채」라고 하는 것이므로, 갱신 타이밍에 대해서는 제대로 생각하지 않으면 안됩니다.
또, 최신이라면 리로드하지 않는 것 같은 움직임으로 하는 경우, 「최신이란?」의 정의를 결정하지 않으면 영원히(API 회수가 고갈될 때까지) 리로드를 계속하는 것 같은 앱이 되어 버릴 것입니다 .
// レコード詳細画面、
kintone.events.on(["app.record.detail.show"], (event) => {
const record = event.record;
// 値が最新だったら更新しない(ここは工夫してね)
if (record.会社名.value === "テスト") {
return event;
}
// レコード更新のパラメータ設定
const body = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
会社名: {
value: "テスト",
},
},
};
// フィールドの値を更新する
return kintone.api(
kintone.api.url("/k/v1/record.json", true), "PUT", body, (resp) => {
// 更新できたらリロード
location.reload();
}
);
});
요약
상세 화면에서는 event.record 변경해도 표시에 반영되지 않습니다! 라고 하는 것은 kintone 커스터마이즈 초보자 쪽이 빠지기 쉬운 곳이라고 생각합니다.
표시만 바꾸고 싶은 경우, 레코드 자체 갱신하고 싶은 경우로 처리 방법도 다르므로 어느 타이밍에 갱신할까 등 잘 생각해 커스터마이즈 해 보세요 👀✨
Reference
이 문제에 관하여(kintone의 상세 화면이 열릴 때 필드의 값을 변경하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/juri_don/items/dc7300008d8b83bc8603
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// レコード詳細画面表示後
kintone.events.on(
["app.record.detail.show"],
(event) => {
const record = event.record;
console.log("変更前", record.会社名.value);
record.会社名.value = "テスト";
console.log("変更後", record.会社名.value);
return event;
}
);
event.record.フィールドコード.value = "何らかの値";
return event;
kintone.app.record.getFieldElement("会社名").textContent= "テスト";
// レコード詳細画面、
kintone.events.on(["app.record.detail.show"], (event) => {
const record = event.record;
// 値が最新だったら更新しない(ここは工夫してね)
if (record.会社名.value === "テスト") {
return event;
}
// レコード更新のパラメータ設定
const body = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
会社名: {
value: "テスト",
},
},
};
// フィールドの値を更新する
return kintone.api(
kintone.api.url("/k/v1/record.json", true), "PUT", body, (resp) => {
// 更新できたらリロード
location.reload();
}
);
});
상세 화면에서는 event.record 변경해도 표시에 반영되지 않습니다! 라고 하는 것은 kintone 커스터마이즈 초보자 쪽이 빠지기 쉬운 곳이라고 생각합니다.
표시만 바꾸고 싶은 경우, 레코드 자체 갱신하고 싶은 경우로 처리 방법도 다르므로 어느 타이밍에 갱신할까 등 잘 생각해 커스터마이즈 해 보세요 👀✨
Reference
이 문제에 관하여(kintone의 상세 화면이 열릴 때 필드의 값을 변경하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/juri_don/items/dc7300008d8b83bc8603텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)