无法使用属性绑定使静态属性在 emberjs class 中工作
Can't get static property to work in emberjs class using property bindings
我正在尝试在 ember 对象中创建静态属性(所有实例都应共享相同的属性并在更改时做出反应)。在我的例子中,我有 4 个不同的实例,如果这些实例中的任何一个更改了 refresh
属性,我希望所有 4 个实例都对其做出反应。
我发现 refresh
绑定只针对当前实例执行,因此我希望它针对所有实例执行,因为它是一个静态属性。
enabled : function() {
...
}.property('refresh'), <----- this only executes for the current instance
selectionChanged : function() {
...
this.incrementProperty('refresh');
}.observes('selection')
我已经尝试使用 mixin
创建 refresh
属性
var AbstractControlMixin = Ember.Mixin.create({
refresh : 0
});
var AbstractControl = Ember.Object.extend(AbstractControlMixin,{
...
});
使用重新打开技术
var AbstractControl = Ember.Object.extend({
...
});
AbstractControl.reopen({
refresh : 0
});
但两者都不起作用。
您可以向 class 添加对对象的引用,这将是在所有实例之间共享的静态引用。但是你需要小心,如果你要将它变成一个 mixin,它会在使用它的每一个东西之间共享,它不会对每个 class.
不同
var klass = Em.Object.extend({
name:'',
refresh:{
value:0
},
changed: function(){
console.log('refresh ' + this.get('name'));
}.observes('refresh.value')
});
var k1 = klass.create({name:'k1'});
var k2 = klass.create({name:'k2'});
k1.incrementProperty('refresh.value'); // this will fire changed for all instances
我正在尝试在 ember 对象中创建静态属性(所有实例都应共享相同的属性并在更改时做出反应)。在我的例子中,我有 4 个不同的实例,如果这些实例中的任何一个更改了 refresh
属性,我希望所有 4 个实例都对其做出反应。
我发现 refresh
绑定只针对当前实例执行,因此我希望它针对所有实例执行,因为它是一个静态属性。
enabled : function() {
...
}.property('refresh'), <----- this only executes for the current instance
selectionChanged : function() {
...
this.incrementProperty('refresh');
}.observes('selection')
我已经尝试使用 mixin
创建refresh
属性
var AbstractControlMixin = Ember.Mixin.create({
refresh : 0
});
var AbstractControl = Ember.Object.extend(AbstractControlMixin,{
...
});
使用重新打开技术
var AbstractControl = Ember.Object.extend({
...
});
AbstractControl.reopen({
refresh : 0
});
但两者都不起作用。
您可以向 class 添加对对象的引用,这将是在所有实例之间共享的静态引用。但是你需要小心,如果你要将它变成一个 mixin,它会在使用它的每一个东西之间共享,它不会对每个 class.
不同var klass = Em.Object.extend({
name:'',
refresh:{
value:0
},
changed: function(){
console.log('refresh ' + this.get('name'));
}.observes('refresh.value')
});
var k1 = klass.create({name:'k1'});
var k2 = klass.create({name:'k2'});
k1.incrementProperty('refresh.value'); // this will fire changed for all instances