2016-08-15 12 views
0

私のアプリケーションでは、配列内の配列内のオブジェクトを持つ構造体があります。オブジェクトはANDルールと呼ばれ、オブジェクトを含む配列はORルールと呼ばれます。構造は次のようになります。配列内のオブジェクト内の値をEmber.jsで配列に変更する1.13

matching: [ 
    [ // OR rule 
    { // AND rule 
     name: "rule #1.1", 
     value: "test" 
    }, 
    { // AND rule 
     name: "rule #1.2", 
     value: "test B" 
    } 
    ], 
    [ // OR rule 
    { // AND rule 
     name: "rule #2.1", 
     value: "test C" 
    } 
    ] 
] 

値を変更しようとすると、Emberはすべての値を変更します。たとえば、ルール#1.2の値を「テスト値」に変更すると、ルール#1.1およびルール#2.1の値も「テスト値」に変更されます。私は、値を設定するには、次のコードを使用します。

setValue (andIndex, orIndex, value) { 
    var orRule = this.get('matching').objectAt(orIndex); 
    var andRule = orRule.objectAt(andIndex); 
    Ember.set(andRule, 'value', value.target.value); 
} 

私は値を変更するテンプレートは以下のようになります。

{{#each matching as |orRule orIndex|}} 
    {{#each orRule as |andRule andIndex|}} 
    <input type="text" onkeyup={{action 'setValue' andIndex orIndex value=value}}> 
    {{/each}} 
{{/each}} 

私の質問は:私は私が変更一つの値だけを変更したいです。これはどうすればいいですか? 注:私はEmber.JS 1.13を使用します。

+0

はどのように...実際にあなたのコードがperfect..Iであるあなたが...チェックを確認し、私はあなたのソリューションを試してみました – kumkanillam

答えて

0

あなたは行動する必要はありません。 inputヘルパー内だけで設定した値

{{#each matching as |orRule orIndex|}} 
    {{#each orRule as |andRule andIndex|}} 
    {{input value=andRule.value}} 
    {{/each}} 
{{/each}} 

UPDATE

thisをチェックしてみてください。

+0

を横断する必要が疑う?あなたのコードが動作していない確認しなかったが、それは(すべての値を設定しません。値:null)。また、{{input type = "text" value = andEntry.value}}を試しました。その結果、すべての値が最後に変更された値に設定されます。 –

+0

@WouterStolk私の最新情報を更新しました –

+0

ありがとうございました!問題は、ORルールを配列に追加するためのテンプレートとして機能していたグローバル変数があることでした。何らかの理由でこのグローバル変数が配列にリンクされていました。これで、テンプレートをORルールを追加する関数に移動しました。これは、説明したとおりに機能します。 –

関連する問題