web-dev-qa-db-ja.com

vuejsに値が存在するかどうかを確認します

私はデータを持っています:1、2、3、4、4、5&私のコードは次のようになります:

<div id="looping" v-for="display in editlistAssesments">
  {{display.test_id}}
</div>

このようなphpの場合の私のコード

$temp_id = array();
foreach($data as $data){
  if(in_array($data ->test_id,$temp_id)){
    echo" 1: no";
    echo" 2: no";
    echo" 3: no";
    echo" 4: yes"; //because he have same value 
    echo" 5: no";
    $temp_id[] = $data ->test_id;
  }
}

ループvueJsでそれを行うにはどうすればよいですか.. ??

4
b4dQuetions

私が理解している限り、値が配列内にあるかどうかを確認し、それに応じてレンダリングしたいですか?

もしそうなら、あなたはVueカスタムフィルターが必要です。このような何かがトリックを行います:

var vm = new Vue({
    el: 'body',

    data: {
        editlistAssesments: [1,2,3,4,4,5]
    },

    filters: {
        ifInArray: function (value) {
            return this.editlistAssesments.indexOf(value) > -1 ? 'Yes' : 'No';
        }
    },
});

そして、次のように使用します。

<div id="looping" v-for="display in editlistAssesments">
    <span v-text="display.test_id | ifInArray"></span>
    <!-- bind Vue value to html element is better practice -->
</div>

詳細については、ドキュメントを確認してください: http://vuejs.org/guide/custom-filter.html

6
Alliswell

私の観点からすると、最善の方法は次のとおりです。

<div id="looping" v-for="display in editlistAssesments">
    <span v-if="typeof display.test_id !== 'undefined'">{{display.test_id}}</span>
</div>

v-if="display.test_id"を使用し、test_idの値が0ブール比較)の場合、display.text_idは表示されないためです。

4
tomloprod