2

請求先住所と配送先住所のフィールドを含むフォームを作成しています。ユーザーが「同じ住所」をチェックした場合、請求先住所と配送先住所の間にバインドを作成したい; ボックスがチェックされていない場合、そのバインディングを切断したい。

HTML:

{{#with billingAddress}}
  {{view Ember.TextField valueBinding="firstName"}}
  {{view Ember.TextField valueBinding="lastName"}}
{{/with}}

{{view Ember.Checkbox checkedBinding="view.isSameAddress"}}

{{#with shippingAddress}}
  {{view Ember.TextField valueBinding="firstName"}}
  {{view Ember.TextField valueBinding="lastName"}}
{{/with}}

JavaScript:

App.AddressesRoute = Ember.Route.extend({
  model: function() {
    return {
      billingAddress: Checkout.BillingAddress,
      shippingAddress: Checkout.ShippingAddress
    };
  }
});

App.AddressesView = Ember.View.extend({
  isSameAddress: false,
  useSameAddress: function() {
    if (this.isSameAddress) {
      // bind billing and shipping addresses
    } else {
      // remove binding
    }
  }.observes('isSameAddress')
});

App.Address = Ember.Object.extend({
  firstName: null,
  lastName: null
});

App.Billing = App.Address.create({
  firstName: 'John',
  lastName: 'Doe'
});

App.Shipping = App.Address.create({
  firstName: '',
  lastName: ''
});

私はEmber.Binding、運のない他の多くの方法と同様に、を使用してみました。送料を請求として設定できましたが、拘束力がなく、テンプレートが更新されません。

正しい方向への助けやナッジをいただければ幸いです。

4

1 に答える 1

5

私は Ember の専門家ではありませんが、Ember.Bindingを使用する必要があるようです。多分このようなもの:

Ember.oneWay(App.Shipping, "firstName", "App.Billing.firstName");

App.Shipping.firstNameApp.Billing.firstNameフィールドの間の一方向バインディングを設定します。

http://jsfiddle.net/mSxeP/1/

于 2013-05-14T21:27:03.427 に答える