Javascript 如何告诉Ember.js数组已更新

Javascript 如何告诉Ember.js数组已更新,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我已经阅读了一段时间的文档,现在无法理解它。我有以下代码: App.User = DS.Model.extend({ name: DS.attr("string"), points: DS.attr("float"), isPassing: Ember.computed.gt("points", 65), isEditingPoints: DS.attr("boolean", {defaultValue: false}), isEditingName: DS.att

我已经阅读了一段时间的文档,现在无法理解它。我有以下代码:

App.User = DS.Model.extend({
   name: DS.attr("string"),
   points: DS.attr("float"),
   isPassing: Ember.computed.gt("points", 65),
   isEditingPoints: DS.attr("boolean", {defaultValue: false}),
   isEditingName: DS.attr("boolean", {defaultValue: false})
});

App.User.FIXTURES = [
   {
      id: 1,
      name: "Joe",
      points: 85
   },
   {
      id: 2,
      name: "Cindy",
      points: 90
   },
   {
      id: 3,
      name: "Ben",
      points: 62
   }
];

App.UserController = Ember.ObjectController.extend({
   actions: {
      editUserName: function() {
         this.set("isEditingName", true);
      },

      editUserPoints: function() {
         this.set("isEditingPoints", true);
      },

      acceptPointChanges: function() {
         this.set("isEditingPoints", false);

         if(Ember.isEmpty(this.get("model.points"))) {
            this.send("removeUser");
         }
      },

      acceptNameChanges: function() {
         this.set("isEditingName", false);

         if(Ember.isEmpty(this.get("model.name"))) {
            this.send("removeUser");
         }
      },

      removeUser: function() {
         var user = this.get("model");
         student.deleteRecord();
      }
   }
});

App.EditUserView = Ember.TextField.extend({
   didInsertElement: function() {
      this.$().focus();
   }
});

Ember.Handlebars.helper("edit-user", App.EditUserView);



App.ApplicationController = Ember.ArrayController.extend({
   actions: {
      createStudent: function() {
         var newName = this.get("newName");
         var newPoint = this.get("newPoint")
         var parsePoint = parseFloat(newPoint, 10);

         if(!newName.trim() || isNaN(parsePoint)) {
            return;
         }

         Count++;

         var student = this.store.createRecord("student", {
            id: Count,
            name: newName,
            points: parsePoint
         });

         this.set("newName", "");
         this.set("newPoint", "");
      }
   },

   AverageScore: function() {
      var UserInfoArray = this.sortBy("id");

      var sumOfPoints = 0;

      console.log("ran AverageScore");

      for(var i = 0; i < UserInfoArray.length; i++) {

         var UserData = UserInfoArray[i]._data;
         var UserAtt = UserInfoArray[i]._attributes;

         if(isNaN(studentAtt.points)) {
            sumOfPoints += studentData.points;
         } else {
            sumOfPoints += parseFloat(studentAtt.points,10);
         }
      }

      if(sumOfPoints == 0) {
         return "None";
      }
      return sumOfPoints/UserInfoArray.length;
   }.property("@each")
App.User=DS.Model.extend({
名称:DS.attr(“字符串”),
要点:DS.attr(“浮动”),
isPassing:Ember.computed.gt(“点”,65),
isEditingPoints:DS.attr(“布尔值”{defaultValue:false}),
isEditingName:DS.attr(“布尔值”{defaultValue:false})
});
App.User.FIXTURES=[
{
id:1,
姓名:“乔”,
积分:85
},
{
id:2,
姓名:“辛迪”,
积分:90
},
{
id:3,
姓名:“本”,
积分:62
}
];
App.UserController=Ember.ObjectController.extend({
行动:{
editUserName:function(){
此.set(“isEditingName”,true);
},
editUserPoints:function(){
此.set(“isEditingPoints”,true);
},
acceptPointChanges:函数(){
此.set(“isEditingPoints”,false);
if(Ember.isEmpty(this.get(“model.points”)){
此。发送(“removeUser”);
}
},
acceptNameChanges:函数(){
此.set(“isEditingName”,false);
if(Ember.isEmpty(this.get(“model.name”)){
此。发送(“removeUser”);
}
},
removeUser:函数(){
var user=this.get(“模型”);
student.deleteRecord();
}
}
});
App.EditUserView=Ember.TextField.extend({
didInsertElement:函数(){
这个。$().focus();
}
});
Ember.handlebar.helper(“编辑用户”,App.EditUserView);
App.ApplicationController=Ember.ArrayController.extend({
行动:{
createStudent:function(){
var newName=this.get(“newName”);
var newPoint=this.get(“newPoint”)
var parsePoint=parseFloat(newPoint,10);
如果(!newName.trim()| | isNaN(parsePoint)){
返回;
}
计数++;
var student=this.store.createRecord(“学生”{
id:伯爵,
姓名:newName,
点:parsePoint
});
this.set(“newName”,”);
此.set(“newPoint”,“newPoint”);
}
},
AverageScore:函数(){
var UserInfoArray=this.sortBy(“id”);
var sumOfPoints=0;
log(“运行平均分数”);
对于(var i=0;i

我正在尝试获取每个用户的平均分数,但每当我更新应用程序时,它都不会再次运行AverageScore函数。我希望它在每次更新用户数组中的项目时都运行。但是,它只在每次从数据集中删除用户时更新。如何使它在每次更改时更新?

您如何更新应用程序rray values?我正在学习余烬教程。@Vaibhav例如:
{{edit user class=“edit”value=item.name focus out=“acceptNameChanges”insert newline=“acceptNameChanges”}
实际上是这样做的。属性(@each”)然后它会在数组长度上保留一个观察者,如果您删除一条记录或添加一条记录,则会调用Averagescore。现在我不确定acceptNameChanges是如何更改名称的。@Vaibhav感谢您的帮助,我将其更改为“@each.points”,并修复了它。