0

プロパティ「isChecked」(ブール値プロパティ)を持つ配列コントローラーがあります。私のコントローラーでは、「チェックされた」(つまり選択された)要素のコレクションを取得したいと考えています。モデル内のコントローラーのプロパティにアクセスする方法がわかりません。

私のコントローラーは次のとおりです。

App.ExampleController = Ember.ArrayController.extend({
    isChecked: false,
    totalElements: function()
    {
        return this.model.get('length');
    }.property('@each'),
    selectedElements: function()
    {
        var content = this.get('content');
        console.log(content.filterBy('isChecked'));
        return content.filterBy('isChecked');
    }.property('isChecked'),
});

次のように、「isChecked」プロパティを各ヘルパー内のチェックボックスにリンクしました。

<ul>
   {{#each model}}
        <li>
            {{input type="checkbox" checked=isChecked}}
            {{name}}
        </li>
    {{/each}}
</ul>

モデル内のすべての項目を、関連付けられたチェックボックスとともに表示します。ユーザーはそこからいくつかの項目を選択できます。だから私はそれらのアイテムが欲しいです。

ここに画像の説明を入力

ここで、「チェック済み」の要素のリストを取得したいと思います。計算されたプロパティとして、または任意のアクションの下で。

ありがとうございました。

4

1 に答える 1

3

isCheckedプロパティをに移動してObjectControllerから、配列コントローラーでそのコントローラーをプロパティで参照する必要があると思いますitemController

アレイ コントローラ:

App.IndexController = Ember.ArrayController.extend({
  itemController: 'color',

  totalElements: function() {
    return this.get('length');
  }.property('[]'),

  selectedElements: Ember.computed.filterBy('@this', 'isChecked', true)
});

(これ@thisは、計算されたプロパティが項目コントローラーの配列を参照することを意味します。)

アイテムコントローラー:

App.ColorController = Ember.ObjectController.extend({
  isChecked: false
});

http://emberjs.jsbin.com/tazojejuwi/1/edit

それが役立つことを願っています。

于 2015-03-24T10:15:34.403 に答える