Ember.js Ember-动态值绑定

Ember.js Ember-动态值绑定,ember.js,Ember.js,我有一个看似简单的要求,在一个余烬应用程序,是给我适合 我想拿这个: {{view Ember.TextField valueBinding="fields.firstName"}} 并将firstName字段设为变量。这是目的,但显然不起作用: {{view Ember.TextField valueBinding="fields.{{fieldName}}"}} 我错过了什么明显的东西吗?这似乎是一件非常基本的事情,但我已经尝试了10种不同的事情,我认为“应该”起作用,但没有一种像预期的

我有一个看似简单的要求,在一个余烬应用程序,是给我适合

我想拿这个:

{{view Ember.TextField valueBinding="fields.firstName"}}
并将firstName字段设为变量。这是目的,但显然不起作用:

{{view Ember.TextField valueBinding="fields.{{fieldName}}"}}

我错过了什么明显的东西吗?这似乎是一件非常基本的事情,但我已经尝试了10种不同的事情,我认为“应该”起作用,但没有一种像预期的那样起作用。

对于动态值绑定,在控制器上创建一个计算属性:

此外,我认为valueBinding已被弃用。用价值代替


这里还有一个类似的问题:

您必须创建一个计算属性,该属性将侦听
字段名,然后返回值

例如,见。这就是你想做的吗?必须记住,车把是相当“愚蠢”的,故意的,不能真正做复杂的计算方式,你可能会习惯于从角度或其他框架。控制器应该处理所有这些

App.IndexController = Ember.Controller.extend({

  fields: {
    field1: 'test',
    field2: 'test2'
  },

  fieldName: '',

  myFieldName: function() {
    var fields = this.get('fields');
    var fieldName = this.get('fieldName');

    return fields[fieldName];

  }.property('fieldName')

});
然后,在您看来,绑定到myFieldName

{{view Ember.TextField valueBinding=myFieldName}}

与其让
TextField
直接跟踪变量,不如让
TextField
跟踪计算属性,并让计算属性跟踪变量

例如,如果您同时拥有一个
firstName
和一个
lastName
,您可以这样做

App.IndexController = Ember.Controller.extend({

  //These are the fields you would want to edit
  firstName: 'Tom',
  lastName: 'Dale',

  //this is so that we can create a selectbox to choose which field to edit
  availableFields: ['firstName', 'lastName'],
  selectedField: 'firstName',

  //This is the computed property which tracks the selected field
  //The text input would be bound to this
  fieldValue: function(key, value){
    var selectedField = this.get('selectedField');
    if (value) {
      this.set(selectedField, value);
    }
    return this.get(selectedField);
  }.property('selectedField')

}); 

您可以在这里看到一个工作箱:

您现在可以在mut帮助下使用动态键(变量)绑定输入值

检查以下示例

var Object = {};
var key = "firstName";
我们可以像这样在输入助手中绑定键

{{input value=(mut (get Object key))}}

{{Object.firstName}} // Prints the dynamic value in textbox

这是没有帮助的。另一个问题是1.5年前,永远在余烬时间,它也不能完全回答这个问题。做了一点挖掘,我没有发现valueBinding被弃用的迹象。valueBinding肯定被弃用了。你反应很快。是否尝试在控制器中创建计算属性,并在模板中将其作为传递给textfield的值引用?我会为你创建一个ember.jsbin,但老实说,我正在工作,只是在这里轻松地度过。我已经尝试了很多方法来解决这个问题,包括你的建议。如果你想有所帮助,请给出实际的代码。它应该是一个线性函数,可能有一个小的计算属性函数,所以我不会要求太多。但是如果你不知道答案,请不要只是抛出一些你认为“应该”起作用的东西。“应该”在这里不起作用。只使用
value=fields.fieldName
。没有报价这是不对的。它绑定到字段中的键“fieldName”,但实际上并不存在。我认为您的示例与我的示例有相同的问题。如果您稍后尝试显示字段,它正确绑定的唯一方法是使用常量字符串。我认为这是预期的行为。视图层实际上不应该做计算工作,比如访问数组或对象的元素。它还允许您轻松测试该行为,因为它封装在控制器逻辑中。就是这样!我没有利用计算属性可以用来设置有问题的值这一事实。请注意,计算属性的语法现在已更改:
{{input value=(mut (get Object key))}}

{{Object.firstName}} // Prints the dynamic value in textbox