1

したがって、データ関数を使用したくありません (たとえば、最終ユーザーがテンプレートとのみ対話し、javascript をハードコーディングしないようにしたいとします)。この配列にn 個の要素がある場合、 ractive 内でm 個の要素を取得できるようにするには、どうすればそれをフィルター処理できますか?テンプレート ?今、私はこのコード>> http://jsfiddle.net/t168vymw/4/を持っていますが、これは正しく動作していません。

要件: 一部の関数を使用してフィルター処理を行うことはできません data: {filtersomething: function(){...} } が、代わりに、ユーザーがテンプレートから複雑な配列関数の変換を使用できるようにします。ractive はまだこれをサポートしていますか?

4

2 に答える 2

1

ユーザーから任意の js に公開したい場合は、次のようにすることができます ( http://jsfiddle.net/h7ut7cbx/2/ ):

<input value='{{filter}}'>
<br>
{{# filtered }}
    {{.}}<br>
{{/ }}

data: {
    a: [1,2,3,4,5,6],
    filter: 'b%2'
},
computed: {
    filtered: function(a, filter){
        var fn = new Function('b', 'return ' + (this.get('filter')||'true') + ';')
        return this.get('a').filter(fn)
    }
}
于 2014-09-23T17:02:19.263 に答える
0

Ractive は式内にfunctionキーワードを含むものをサポートしていませんが、これを行うには 3 つの方法があります。

  • データ関数、
  • メソッド呼び出し (テンプレート内から ractive インスタンスのメソッドを呼び出す)、
  • テンプレートでデータを直接フィルタリングします。

あなたは、すべてのロジックをテンプレートに入れたいと言ったので、オプション #3 が残ります。たとえば、リストから偶数のみを表示する場合は、次のようにします。

{{ #a }}
    {{ #!(this % 2) }}
        {{ this }}
    {{/}}
{{ /a }}

ただし、これは通常、アンチパターンと見なされます。ユーザーがカスタム JS を作成できるようにするか、テンプレートで使用できるいくつかの準備済み関数をユーザーに提供することをお勧めします。

于 2014-09-23T16:46:16.180 に答える