위 챗 애플 릿 setData 사용 방법 및 자주 사용 되 는 오류 해결 방법

위 챗 애플 릿 setData 사용 방법 및 자주 사용 되 는 오류 해결 방법
최근 위 챗 애플 릿 을 만 드 는 것 은 공유 자전거 로 연습 하 는 것 과 유사 하 다.기본 원 리 는 애플 릿 이 서버 에 경 위 를 보 내 고 서버 가 데이터베이스 에서 경위도 근처 의 자전 거 를 검색 해 애플 릿 에 전달 하 는 것 이다.
여기 있 습 니 다.맞습니다.바로 여기 입 니 다.전 달 된 값 은 jsonarray 형식 으로 전 달 됩 니 다.
jsonarray 를 분석 하여 경위도,ID 등 차량 정 보 를 얻 은 다음 에 애플 릿 지도 에 있 는 mark 에 값 을 부여 해 야 합 니 다.보통 제 생각 은 하나의 for 순환 으로 모든 mark 에 값 을 부여 한 다음 에 Setdata 를 설정 하면 ok 입 니 다.
결국 애플 릿 setData()가 배열 대상 의 특정한 요소 의 속성 을 설정 할 때 전혀 소 용이 없 을 거 라 고 생각 하지 못 했 습 니 다...
그리고 바 이 두 는 잠시 후에 방법 을 찾 았 습 니 다.   https://www.jb51.net/article/111691.htm
최근 위 챗 애플 릿 의 setData 를 사용 하 던 중 다음 과 같은 문제 가 발생 했다.다음 과 같다.
홈 페이지 문 서 는 setData()를 사용 하여 배열 대상 의 특정한 요소 의 속성 을 설정 할 때 이렇게 사용 합 니 다.

Page({
 data: {
  array: [{text: 'init data'}],
 },
 changeItemInArray: function() {
  this.setData({
   'array[0].text':'changed data'
  })
 }
})
'array[0].text':'changed data'와 같은 값 을 사 용 했 습 니 다.그러나 실제 사용 에서 우 리 는 배열 의 특정한 요소 에 대한 설정 이 동적 입 니 다.즉,우 리 는 보통'array['+index+'].text':'changed data'이 어야 한다.그 중에서 index 는 동태 적 인 숫자 일 것 이다.그러나 이것 은 대상 의 키 에 사용 할 수 없 는 것 이 분명 하 다.
그래서 나 는 변 칙 적 인 방법 을 사용 할 수 밖 에 없 었 다.다음 과 같다.

var param = {};
var string = "array["+index+"].text;
param[string] = 'changed data';
that.setData(param);
이 속성 마다 한 번 씩...
내 가 더 좋 은 방법 을 찾 지 못 했 는 지 어 땠 는 지 나의 강박 증 이 모두 나 왔 다.
다음은 제 코드 입 니 다.

 markers: {
   iconPath: "/picture/bike.png",
   id: 0,
   latitude: 23.099994,
   longitude: 113.324520,
   width: 50,
   height: 50
  }
이것 은 markers 류 구조 입 니 다.저 는 할당 을 위해 이렇게 많이 썼 습 니 다.

for(var i = 0; i < res.data.length; i++){
       // that.data.markers[i].id=i;
        // mark.id=i;
       var param = {};
       var string = "markers["+i+"].id";
       param[string] = res.data[i].Bike_id;       
        that.setData(param);


       var string="markers["+i+"].iconPath";
       param[string] ="/picture/bike.png";
       that.setData(param);


       var string = "markers["+i+"].latitude";
       param[string] = res.data[i].BIKE_latitude;       
        that.setData(param);
     


       var string = "markers["+i+"].longitude";
       param[string] = res.data[i].BIKE_longitude;       
        that.setData(param);




        var string = "markers["+i+"].width";
       param[string] = 50;       
        that.setData(param);


        var string = "markers["+i+"].height";
       param[string] = 50;       
        that.setData(param);
        /* that.setData({
        markers:[{
   iconPath: "/picture/bike.png",
   id: 0,
   latitude: 23.099994,
   longitude: 113.324520,
   width: 50,
   height: 50
        }]
       })*/
       }
     //   console.log(res.data[1])
       var markk=that.data.markers;
       that.setData({markers:markk})

마지막 으로 setData 를 해 야 합 니 다.그렇지 않 으 면 지도 가 새로 고침 되 지 않 습 니 다.
QT 가 순식간에 잘 되면 정말 귀 찮 습 니 다.........................................................
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기