当您拥有“包含”的新数据时,更新/刷新Page-Mod的最佳方法是什么?

时间:2012-08-27 19:25:16

标签: javascript arrays widget firefox-addon firefox-addon-sdk

我有一个page-mod,它使用数组作为包含字段的数据。我希望能够使用splice从数组中添加/删除数据,并进行page-mod刷新。这是我的代码:

//APIs:
var store = require("simple-storage");
var pageMod = require("page-mod");
var self = require("self");

//Array for Include:
store.storage.sites = ["*.example.com","*.google.com","*.org"];

//Page-mod code:
myPageMod = pageMod.PageMod({
  include: store.storage.sites,
  contentScriptWhen: 'start',
  contentScriptFile: [self.data.url("nicEdit-latest.js"),
                      self.data.url("pagedit.js")]
});

//Code to change array
function deleteItem(index) {
  store.storage.sites.splice(index,1);
});

现在我需要的是将page-mod作为deleteItem的一部分进行更新的方法,以便它不再适用于新删除的网站。

我尝试将page-mod放入函数并调用函数。我也尝试更新数组然后myPageMod.include = store.storage.sites,但这也没有做任何事情。

2 个答案:

答案 0 :(得分:2)

page-modinclude property,包含当前包含规则的列表。您可以在其上调用add()remove()方法,例如:

function addItem(rule) {
  store.storage.sites.push(rule);
  myPageMod.include.add(rule);
}

function deleteItem(index) {
  myPageMod.include.remove(store.storage.sites.splice(index,1));
}

答案 1 :(得分:0)

我认为如果您使用变量来引用您的pagemod,您应该可以更改它。

var myPageMod = pageMod.PageMod({
  include: store.storage.sites,
  contentScriptWhen: 'start',
  contentScriptFile: [self.data.url("nicEdit-latest.js"),
                      self.data.url("pagedit.js")]
});

function deleteItem(index) {
  myPageMod.include = store.storage.sites.splice(index,1);
});