Ember中的多个ValueBinding实例

时间:2013-12-12 04:20:10

标签: asp.net-mvc model-view-controller ember.js asp.net-web-api

我有一个像这样的控制器,

    App.NewController = Ember.Controller.extend({
    // the initial value of the `search` property
    model: this.get('model'),
    start_date:new Date(),
    end_date: new Date()
});

我的视图模板如下所示,

<div class="control-group">
  <label class="control-label" for="inputPassword">Event Start Date</label>
  <div class="controls">
    {{view App.DatePickerField  valueBinding='controller.start_date'}}

  </div>
</div>

<div class="control-group">
  <label class="control-label" for="inputPassword">Event End Date</label>
  <div class="controls">
    {{view App.DatePickerField  valueBinding='controller.end_date'}}

  </div>
</div>

最后我有这样的datepicker视图:

App.DatePickerField = Ember.View.extend({
    templateName: "Datepicker",
    didInsertElement: function () {
        var OnChangeDate, self;
        self = this;
        OnChangeDate = function (evt) {
            return self.set('value', evt.date.toString());
        };
        return $('.date').datetimepicker({
            language: 'en',
        }).on('changeDate', OnChangeDate);
    }
});

现在的问题是,如果我选择我的开始日期,controller.start_date会同时更新,就像我想要的那样。但是当我选择结束日期时,start_date和end_date都会更新,现在start_date具有相同的end_date值。就像ValueBinding保持同步一样。我对Ember很新。有人可以帮助我,我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

这与两个选择器挂钩

   return $('.date').datetimepicker({
        language: 'en',
    }).on('changeDate', OnChangeDate);

您可以使用此函数将其范围限定为此元素。$()

   return $(this.$('.date')).datetimepicker({
        language: 'en',
    }).on('changeDate', OnChangeDate);