2016-07-02 7 views
1

selectpickerから1つの動作を理解したいと思います。私はこのコードを、唯一の要素#symptom1作品を実行し、selectpickerに適切なオプションをロードするとブートストラップのselectpickerのvalはオブジェクトだけを受け入れることはありません

Template.checkNotification.onRendered(function() { 
    var currentNotification = Session.get("currentNotification"); 

    this.$('#symptoms1').selectpicker({ 
     multipleSeparator: ' ', 
    }); 

    this.$('#symptoms2').selectpicker({ 
     multipleSeparator: ' ', 
    }); 

    var symptoms = []; 
    for (var symptom of currentNotification.symptom.symptoms) { 
     symptoms.push('"' + symptom.name + ';;' + symptom.value + '"'); 
    } 
    var symptomsSelected = symptoms.join(", "); 

    var test1 = ['Dor de Cabeça;;dor-de-cabeca','Náusea;;nausea']; 
    var test2 = "["+symptomsSelected+"]"; 

    this.$('#symptoms1').selectpicker('val', test1); 
    this.$('#symptoms2').selectpicker('val', test2); 
}); 

:私は私のセッションから1つの属性で、この、この要素の負荷をしようとしています。

selectpickerに提供するオプションの配列を作成するにはどうすればよいですか?

+0

$ scope.symptomsSelected = "[" + ' "\私の選択項目がある文字列\"' + "]" $ scope.test2 =:さて、あなたはselectpickervalを設定するためにこれを使用することができますangular.fromJson($ scope.symptomsSelected); $ scope.test2 = $ scope.test2 [0]; – Prianca

答えて

-1

plunker:http://plnkr.co/edit/sjwK1e?p=preview

$scope.symptomsSelected="["+'"\My selected item is string\"'+"]" 
 
$scope.test2 =angular.fromJson($scope.symptomsSelected); 
 
$scope.test2=$scope.test2[0];
{{test2}} 
 
    <br> 
 
    {{symptomsSelected}}

1

あなたはselectpickerに症状を渡したい場合は、ネイティブ配列としてそれを提供する必要があります。

var currentNotification = { 
 
    symptom: { 
 
    symptoms: [ 
 
     { name: "symptom1", value: "value1" }, 
 
     { name: "symptom2", value: "value2" }, 
 
     { name: "symptom3", value: "value3" }, 
 
     { name: "symptom4", value: "value4" }, 
 
     { name: "symptom5", value: "value5" } 
 
    ] 
 
    } 
 
}; 
 

 
var symptoms = []; 
 
for (var symptom of currentNotification.symptom.symptoms) { 
 
    symptoms.push('"' + symptom.name + ';;' + symptom.value + '"'); 
 
} 
 

 
var symptomsSelected = symptoms.join(", "); 
 
var test1 = "["+symptomsSelected+"]"; 
 

 
var test2 = $.map(currentNotification.symptom.symptoms, function(symptom) { 
 
    return symptom.name + ';;' + symptom.value; 
 
}); 
 

 
console.log("test1: ", typeof test1, " value: ", test1); 
 
console.log("test2: ", typeof test2, " value: ", test2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

この作業を行い方法:このコードは、配列のオリジナルの方法と(valに割り当てるために適した)新しい方法を構築しますか? jQuery $.map関数はcurrentNotification.symptom.symptoms配列の各症状を処理し、個別にフォーマットしてselectpickerと一緒に使用します。各要素はフォーマットされていますが、配列は元のJavaコード配列として残り、各要素は元のcurrentNotification.symptom.symptoms配列に対応しています。このコード例では、test1は、アレイのようにフォーマットされた文字列であること

test1: string value: ["symptom1;;value1", "symptom2;;value2", "symptom3;;value3", "symptom4;;value4", "symptom5;;value5"] 
test2: object value: [ 
    "symptom1;;value1", 
    "symptom2;;value2", 
    "symptom3;;value3", 
    "symptom4;;value4", 
    "symptom5;;value5" 
] 

違いを見るためにtest1test2の結果を比較します。これは、JSON配列の値に似ています。ネイティブのJavaScript配列の値ではありません。 test2は、selectpickerでの使用に適したJavascript配列です。

$.mapソリューションを使用すると、現在の問題が解決され、適切なJavascript配列が生成されます。

this.$('#symptoms2').selectpicker('val', test2); 
関連する問題