【问题标题】:Observe non-ember globals观察非 ember 全局变量
【发布时间】:2013-01-12 04:43:18
【问题描述】:

我想要一个计算属性来观察非 ember 全局:localStorage 中的特定键。这可能吗?以下似乎没有削减它:

someProperty:function(){
    //some functionality
}.property('localStorage.someKey')

是否可以直接做我想做的事情?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    通常,您可以很好地观察常规 JavaScript 对象。你只需要使用Ember.getEmber.set 来修改它们:

    var pojo = {};
    
    var MyObject = Ember.Object.extend({
      bigEyeballs: function() {
        var O_O = this.get('pojo.O_O');
        if (O_O) { return O_O.toUpperCase(); }
      }.property('pojo.O_O')
    });
    
    var obj = MyObject.create({ pojo: pojo });
    console.log(obj.get('bigEyeballs'));
    
    Ember.set(pojo, 'O_O', "wat");
    console.log(obj.get('bigEyeballs'));
    

    您可以在this JSBin 中看到此功能。

    本地存储有点不同,因为它不是真正一个普通的 JavaScript 对象。您可以围绕本地存储创建一个小型 Ember 包装器,并将其用于观察:

    var LocalStorage = Ember.Object.extend({
      unknownProperty: function(key) {
        return localStorage[key];
      },
    
      setUnknownProperty: function(key, value) {
        localStorage[key] = value;
        this.notifyPropertyChange(key);
        return value;
      }
    });
    
    var storage = new LocalStorage();
    
    var MyObject = Ember.Object.extend({
      bigEyeballs: function() {
        var O_O = this.get('pojo.O_O');
        if (O_O) { return O_O.toUpperCase(); }
      }.property('pojo.O_O')
    });
    
    var obj = MyObject.create({ pojo: storage });
    
    console.log(obj.get('bigEyeballs'));
    
    Ember.set(storage, 'O_O', "wat");
    console.log(obj.get('bigEyeballs'));
    

    你可以在JSBin上看到这个直播。

    在这两种情况下,重要的是您必须使用 Ember 感知设置和获取来观察这些属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-29
      • 2019-02-16
      • 2014-10-10
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多