1

各行が新しいアイテムになる textArea から配列を更新しようとしています。これが私がやろうとしたことですが、textAreaは配列を更新しません:

ハンドルバー:

<script type="text/x-handlebars">
    {{view Ember.TextArea valueBinding="App.listController.formattedContent"}}
    </br>
    {{#each App.listController}}
        {{this}}
    {{/each}}
</script>

JavaScript :

App = Ember.Application.create({});

App.listController = Ember.ArrayController.create({
    content: ['some', 'items', 'in', 'an', 'array'],
    formattedContent: function() {
        return this.get('content').join('\n');
    }.property('content')
});

jsFiddle それほど 単純ではないことはわかっていますが、どこから始めればよいかわかりません。何か案が?

4

2 に答える 2

3

どうぞ:

フィドル: http://jsfiddle.net/Sd3zp

エンバーコントローラー

App.listController = Ember.ArrayController.create({
    content: ['some', 'items', 'in', 'an', 'array'],

    init: function() {
        var content = this.get('content');
        if(content.length > 0){
           this.set('rawContent', content.join('\n'));
        }            

        this._super();
    },

    rawContentDidChange: function(){
       var rawContent = this.get('rawContent');

       var content = rawContent.split('\n');
       this.set('content',content);
    }.observes('rawContent'),
});​

ハンドルバー テンプレート:

<script type="text/x-handlebars">
  {{view Ember.TextArea valueBinding="App.listController.rawContent" rows="5"}}
  <br />
  <br />
  <strong>Output listController content items:</strong>
  {{#each App.listController.content}}
     {{this}} <br />
  {{/each}}
</script>
于 2012-07-13T11:47:03.110 に答える
0

受け入れられた回答は、ember-1.0.0-rc3 では機能しません。

計算されたプロパティはセッターを持つことができるようになったため、質問の例は次のように変更されます

JSビン: http: //jsbin.com/iworub/2/

ハンドルバー:

<script type="text/x-handlebars" data-template-name="application">
  {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="index">
   {{view Ember.TextArea valueBinding="formattedContent" rows="7"}}
  </br>
  {{#each content}}
    {{this}}</br>
  {{/each}}
</script>

JavaScript :

App = Ember.Application.create({});

App.IndexRoute = Ember.Route.extend({
  setupController: function(controller) {
    controller.set('content', ['some', 'items', 'in', 'an', 'array']);
  }
});

App.IndexController = Ember.ArrayController.extend({
  formattedContent: function(key, value) {

    //getter
    if (arguments.length === 1) {
      return this.get('content').join('\n');

    //setter
    } else {
      this.set('content', value.split('\n'));
    }
  }.property('content')
});
于 2013-05-24T06:10:06.393 に答える