2014-02-13 3 views
0

메인 스크립트에서 간단한 스토리지 배열에 저장된 요소를 삭제합니다. 이것은 간단한 스토리지 배열에 null 요소를 만듭니다. 그래서 스크립트를 실행하여 새 배열을 메인 애드온으로 반환합니다 스크립트 (null 요소가 포함되어 있지 않음) 및 간단한 저장소 배열에 할당합니다. 그러나 주 스크립트는 전체 배열이 아닌 하나의 요소 만 가져옵니다. 전체 배열을 얻는 방법? 새로운 배열을 포함하는 어떤 null 요소를 반환콘텐츠 스크립트에서 메인 애드온 스크립트로 배열을 내보내는 중

text_entry.port.on("del", function (todel) { 
    console.log(todel); 
    site_l=ss.storage.sites.length; 

    for(var i=0;i<site_l;i++) 
    { 
    if(ss.storage.sites[i]==todel) 
    { 
     delete ss.storage.sites[i]; 
    } 
    } 
    text_entry.port.emit("c",ss.storage.sites); 
    text_entry.port.on("cd",function(arr){ 
    ss.storage.sites=[]; 
    ss.storage.sites=arr; 
    }); 

}); 

스크립트 :

self.port.on("c",function(arr) 
{ 
    var a=arr; 
    var l=a.length; 

    function isEmpty(element) { 
    if(element!=null) 
     return true; 
    } 

    a=a.filter(isEmpty); 
    self.port.emit("cd",a); 
}); 
+0

바꿀 아래의 주요 부가 코드의 일부이다 여기서 뭘하는지 - text_entry는 page-mod 인스턴스입니까, 아니면 무엇입니까? 사람들이 스스로 테스트하고 실행할 수있는 축소 된 예를 제공 할 수 있습니까? – canuckistani

+0

당신은 내가 당신을 도울 수있는 sdk 버전이 아닌 경우. 간단한 테스트 케이스를 만들 수 있습니까? 데모 애드온을 만들 수 있습니다. – Noitidart

+0

@canuckistani 해당 패널 인스턴스입니다. 사용자는 패널의 목록에서 항목을 선택하고 패널 내용 스크립트를 가져 와서 로컬 배열의 목록에서 선택한 항목을 저장하게하는 삭제 버튼을 클릭합니다. 이제는 해당 배열을 기본 스크립트로 보내야합니다. . 배열을 문자열로 변환하여 주 스크립트로 전달하고 split을 사용하여 배열로 만듭니다. – Ram

답변

1

그것은 말할 어렵다

for(var i=0;i<site_l;i++) { 
    if(ss.storage.sites[i]==todel) { 
    delete ss.storage.sites[i]; 
    } 
} 

ss.storage.sites.splice(ss.storage.sites.indexOf(todel), 1)