为什么我不能设置这个对象属性?

时间:2014-07-30 14:56:05

标签: javascript ember.js

这是我的第一个Ember.js应用程序。我正在构建一个多项选择题(最终是一个测验)。无论何时单击提交按钮,都应将选项突出显示为绿色表示正确,红色表示不正确。我得到了错误" Uncaught TypeError:undefined不是函数"在option.set上("突出显示","绿色")||我的controllers / index.js文件中的option.set(" highlight"," red)。当我在console.log(选项)时,我可以看到有一个属性突出显示的对象。我做错了什么?

路由/ index.js

var IndexRoute = Ember.Route.extend({
   model: function() {
     return Ember.A([
      {
        question: "What's up?",
        answer: 'option b',
        options: [
          {
            text: "option a",
            active: false,
            highlight: ''
          },
          {
            text: "option b",
            active: false,
            highlight: '1'
          }
        ]
      },
      {
        question: "How many?",
        answer: 'two',
        options: [
          "one",
          "two"
        ]
      }
     ]);
   }
 });

控制器/ index.js

var IndexController = Ember.ObjectController.extend({
  actions:{
    submitAction : function(){
      this.get('model').forEach(function (item){
        item.options.forEach(function (option) {
          if (option.text === item.answer) {
            console.log(option);
            option.set("highlight", "green");
            console.log(option.highlight);
          }
          if (option.active && (option.text !== item.answer)) {
            option.set("highlight", "red");
          }
        });
      });
    }
  }
});

1 个答案:

答案 0 :(得分:19)

object选项不是Ember对象,因此它没有get / set方法。

正如Krutius所说,您可以使用Ember.get() / Ember.set()将属性设置为普通的旧JavaScript对象或Ember对象。例如:

Ember.set(myObject, 'property', value);
var val = Ember.get(myObject, 'property');

文档

sethttp://emberjs.com/api/#method_set

gethttp://emberjs.com/api/#method_get