我想创建一个用户只能实例化一次的元素.
到目前为止,我能想到的最好的方法是在匿名函数中定义元素,并在发现元素已经存在时抛出错误.有没有办法让它拒绝被创造?
(function(){
var singleton = false;
Polymer({
is:'my-singleton',
created:function(){
if(singleton) {
throw new Error ('only one my-singleton should be created');
}
singleton = this;
}
});
})();
Run Code Online (Sandbox Code Playgroud)
我似乎有一个未记录的remove()元素函数。我只是将之前的代码移至该attached函数中,并保留一个变量来记录我是否已处于活动状态。
(function(){
var singleton = false;
Polymer({
is:'my-singleton',
attached:function(){
if(singleton) {
this.isActive = false;
this.remove();
} else {
singleton = true;
this.isActive = true;
// remainder of element initialization
}
},
detached:function() {
if(this.isActive) singleton = false;
}
});
})();
Run Code Online (Sandbox Code Playgroud)
这看起来效果很好。