Ember.js 余烬静态变量

Ember.js 余烬静态变量,ember.js,Ember.js,我试图让多个视图访问同一个变量。我想简单的解决方案是让一个控制器为视图存储变量。但在ember中是否还有声明静态变量的方法呢?解决方案是重新打开类并像这样添加静态变量。 您还可以定义一个视图并在其中设置静态变量,其他视图扩展此视图。有两种方法可以定义变量,使其行为类似于Ember对象中的静态变量。一种方法是在类函数中,另一种方法是在Ember.Object的extend函数中定义类时定义变量。 下面的示例演示了这两种方法 App.Person = Ember.Object.extend({

我试图让多个视图访问同一个变量。我想简单的解决方案是让一个控制器为视图存储变量。但在ember中是否还有声明静态变量的方法呢?

解决方案是重新打开类并像这样添加静态变量。

您还可以定义一个视图并在其中设置静态变量,其他视图扩展此视图。

有两种方法可以定义变量,使其行为类似于Ember对象中的静态变量。一种方法是在类函数中,另一种方法是在Ember.Object的extend函数中定义类时定义变量。 下面的示例演示了这两种方法

App.Person = Ember.Object.extend({
    data2: "Boban", // static variable
    setData: function(value){
           App.Person.data=value;
    },
    getData: function(){ return App.Person.data;},
    setData2: function(value){
        App.Person.prototype.data2=value;
    },
    getData2: function(){return  App.Person.prototype.data2;}
 }).reopenClass({
                 data: 123 // static variable
               });


 per1= App.Person.create();
 per2=App.Person.create();
 console.log("show 1 th...");
 console.log("data per1 : " + per1.getData());   //data per1 : 123
 console.log("data per2 : " + per2.getData());   //data per2 : 123
 console.log();
 per1.setData("data is set in per 1");
 console.log("show 2 th...");
 console.log("data per1 : " + per1.getData()); //data per1 : data is set in per 1
 console.log("data per2 : " + per2.getData());  //data per2 : data is set in per 1
 console.log();
 per2.setData("data is set in per2");
 console.log("show 3 th...");
 console.log("data per1 : " + per1.getData());  //data per1 : data is set in per2
 console.log("data per2 : " + per2.getData());   //data per2 : data is set in per2
 console.log();


console.log("show 11 th...");
console.log("data2 per1 : " + per1.getData2()); //Boban
console.log("data2 per2 : " + per2.getData2()); //Boban
console.log();
per1.setData2("data2 is set in per 1");
console.log("show 12 th...");
console.log("data2 per1 : " + per1.getData2()); //data2 per1 : data2 is set in per 1
console.log("data2 per2 : " + per2.getData2());  //data2 per2 : data2 is set in per 1
console.log();
per2.setData2("data2 is set in per2");
console.log("show 13 th...");
console.log("data2 per1 : " + per1.getData2()); //data2 per1 : data2 is set in per2
console.log("data2 per2 : " + per2.getData2());//data2 per1 : data2 is set in per2
console.log();

// end at last
per1.setData("D1");
per2.setData2("D2");

per1.set("data","df1");
per2.set("data","df2");

per1.set("data2","d2f1");
per2.set("data2","d2f2");

console.log("last ....")
console.log("per1 : " + per1.getData()  + "     " +  per1.get("data")  + "          " +  per1.getData2() + "     " + per1.get("data2"));
console.log("per2 : " + per2.getData()  + "     " +  per2.get("data")  + "         " +  per2.getData2() + "     " + per2.get("data2"));


 //per1 : D1     df1     D2     d2f1
 //per2 : D1     df2     D2     d2f2
可以看出,变量datadata2的行为类似于静态变量。如果尝试使用函数set设置同名变量。set('data','df')则该变量是该实例的新变量,与具有相同定义的静态变量不同