0

どうすればよいかわかりません.Ember.TextFieldを無効にし、ボタンをクリックして0から始まる数値を増やすたびに、ボタンを使用してEmber.TextFieldの数値を更新したいと思います.その理由はiPad では、Ember.TextField の上下ボタンは小さすぎて人が触れることができないため、Ember.TextField を無効にして、キーボードもポップアップしないようにし、代わりに上ボタンと下ボタンを配置します。タッチするたびに、Ember.TextField に表示される数値が増加または減少します

ここに私のコード:

<?php if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10') { ?>
    <div class="pull-right">{{view Ember.TextField class="span1 qnty-bulk" valueBinding="item.qnty" type="text" }}</div>
    <button id="increase" {{action "increase"}}>
       Up
    </button>
    <button id="decrease" {{action "decrease"}}>
       Down
    </button>                               
<?php }  ?>

item.qnty はここから来ます:

 {{#each item in salesopportunityitemdata.salesopportunityitems}}

次に、コントローラーに次のものがあります。

increase:function() {
  var self = this;
   $(#span1 qnty-bulk).value +=1;
},

decrease:function() {

},

私はまだ Ember を学習している最中です。チュートリアルはすでにありがとうございました。

4

1 に答える 1

1

コントローラー内のアクション オブジェクト内にコントローラーのアクション関連メソッドを配置する必要があります ( http://emberjs.com/guides/templates/actions/ )。DOM を操作しようとする代わりに、これは正しくありません。 emberjs で、次のようにモデルを操作してみてください

    actions: {
      increase:function() {
/*This will probably not work since you item is probably within a specific datastructure,
but the idea is to use get and set to retrieve your model's values and manipulate them. Then emberjs binding will automagically do the rest*/
        this.get('item').set('qnty',this.get('item').get('qnty')+1);
      },

      decrease:function() {

      }
    }

フィールドをバインドするために使用する ember オブジェクト/モデルを提供すると、必要に応じてコードをより具体的にすることができます。

編集

これはあなたがやろうとしていることの例です http://emberjs.jsbin.com/UjAgUha/1/edit

HB

<script type="text/x-handlebars" data-template-name="index">
    <div class="pull-right">{{view Ember.TextField class="span1 qnty-bulk" valueBinding="item.qnty" type="text" disabled=true}}</div>
    <button id="increase" {{action "increase"}}>
       Up
    </button>
    <button id="decrease" {{action "decrease"}}>
       Down
    </button>       
  </script>

JS

App = Ember.Application.create();

App.Router.map(function() {
  // put your routes here
});

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return {item:App.Item.create()};
  }
});

App.IndexController = Ember.ObjectController.extend({
  actions: {
      increase:function() {
var item = this.get('model.item');
        item.get('item');        item.set('qnty',item.get('qnty')+1);
      },
      decrease:function() {
var item = this.get('model.item');
        item.get('item');        item.set('qnty',item.get('qnty')-1);
      }
    }
});

App.Item = Ember.Object.extend({
  qnty:0
});
于 2013-11-06T09:23:33.097 に答える