1

Ember.js サンプル内のビューをtodo appサイズ変更可能に変更したいとします。

これを行う JQuery コードは次のようになります。

$("#container").resizable()

#container は div を表します。このスニペットがアプリ構造のどこに属するのかわかりません。それはapp.jsの中に入りますか?内容を以下に示しますが、上記のスニペットを挿入するのにどの方法が最も適しているかわかりません。

Todos = Ember.Application.create();

Todos.Todo = Ember.Object.extend({
  title: null,
  isDone: false
});

Todos.todosController = Ember.ArrayController.create({
  content: [],

  createTodo: function(title) {
    var todo = Todos.Todo.create({ title: title });
    this.pushObject(todo);
  },

  clearCompletedTodos: function() {
    this.filterProperty('isDone', true).forEach(this.removeObject, this);
  },

  remaining: function() {
    return this.filterProperty('isDone', false).get('length');
  }.property('@each.isDone'),

  isEmpty: function() {
    return this.get('length') === 0;
  }.property('length'),

  allAreDone: function(key, value) {
    if (arguments.length === 2) {
      this.setEach('isDone', value);

      return value;
    } else {
      return !this.get('isEmpty') && this.everyProperty('isDone', true);
    }
  }.property('@each.isDone')
});

Todos.CreateTodoView = Ember.TextField.extend({
  insertNewline: function() {
    var value = this.get('value');

    if (value) {
      Todos.todosController.createTodo(value);
      this.set('value', '');
    }
  }
});

Todos.MainView = Ember.View.extend({
  templateName: 'main_view'
});
4

1 に答える 1

2

通常、このような DOM 操作プラグインを扱う場合、私はそれをビューのdidInsertElementメソッドに追加するのが好きです。ここthis.$()で、 はビュー要素を表す jQuery オブジェクトです。

Todos.MainView = Ember.View.extend({
  templateName: 'main_view',
  didInsertElement: function(){
    this._super();
    this.$().resizable();
  }
});

ところで、その todos の例はhttps://github.com/emberjs/examples/tree/master/todosに取って代わられましたが、それでも非常に古くなっています。

于 2012-09-20T11:41:42.610 に答える