バックエンド(Symfony)で選択するオプションをどのように初期化することができますか?今、私は何をすべきng-init="myselect='0'"
のように私はng-init
で実際の選択オプションを設定する必要がありますが、私はng-init
ディレクティブを削除した場合、それは価値? undefined:undefined ?
と空のオプションを作成します(ng-model="myselect"
例)私の選択を初期化?これは、あなたが期待したものであるAngularjsを使用してバックエンドから選択したオプションを取得
0
A
答えて
0
に確認してください。
文字列をオブジェクト参照に変換する独自の関数を使用して、vanilla htmlを角型モデルに変換する匿名関数。小枝の構文で
(function(){
window.selectControl = [];
var selects = document.querySelectorAll(".filter__select_range");
selects.forEach(function(elem, index) {
var _elem = angular.element(elem);
if (elem.querySelector("[selected]") !== undefined) {
window.selectControl[_elem.attr("data-model")] = elem.querySelector("[selected]").value;
_elem.attr({
"ng-model": _elem.attr("data-model"),
"ng-change": _elem.attr("data-change"),
"ng-init": _elem.attr("data-model") + "='"+ _elem.find('option:selected').val() +"'",
});
_elem.removeAttr('data-model').removeAttr('data-change');
stringToPath($scope, _elem.attr('ng-model'), elem.querySelector("[selected]").value);
}
});
})();
そしてstringToPath
機能
function stringToPath(obj, str, val) {
str = str.split(".");
for (var i = 0; i < str.length; i++) {
if (i != str.length-1 && str[i] != '') {
if (typeof obj[str[i]] !== "object") {
obj[str[i]] = {}
}
stringToPath(obj[str[i]], str.splice(1).join("."), val);
}
else {
obj[str[i]] = val;
}
}
return obj;
}
そして、私の選択の1
{{- form_widget(form, {'attr': attr|merge({'class': 'filter__select filter__select_range', 'data-model': 'FilterCollection.range.area.min', 'data-change': "checkSelectedFilters();"})}) -}}
1
<div ng-app="myapp">
<fieldset ng-controller="FirstCtrl">
<select
ng-options="p.id as p.first + ' ' + p.last for p in people"
ng-model="selectedPerson"></select>
{{ selectedPerson }}
</fieldset>
var myapp = angular.module('myapp', []);
myapp.controller('FirstCtrl', function ($scope) {
$scope.selectedPerson = 2;
$scope.people = [
{ id: 1, first: 'John', last: 'Rambo', actor: 'Silvester' },
{ id: 2, first: 'Rocky', last: 'Balboa', actor: 'Silvester' },
{ id: 3, first: 'John', last: 'Kimble', actor: 'Arnold' },
{ id: 4, first: 'Ben', last: 'Richards', actor: 'Arnold' }
];
});
.. はまた、私はこの問題を獲得することができた。このリンクhttp://jsfiddle.net/kaehejgo/
+0
それは私が欲しかったものではありません。クライアントオブジェクトの定義です。私は 'url'から選択値を設定する必要があります。 私は2つの解決策しか見ません: 1.ローカルストレージを使用して 2. URLを使用して爆発 私はそれがよりエレガントな方法は、デフォルトのHTML値を取得すると思った – Herrgott
はちょうどuは私が欲しい@gauravデフォルト –
で選択したいものは何でもコントローラでモデルの値を設定しますページをリフレッシュして選択値を記憶するフィルタを作成します。フォーム提出後に、選択されたオプションを右に戻して選択しますが、角度はそれを上書きします。私がng-init = 0を使用すると、選択されたオプションはvalue = '0'のオプションになります.ng-initを削除すると、既にデフォルトで選択されている空のオプションが作成され、バックエンドの応答が上書きされます。 – Herrgott
選択されたバックエンドからすべての角度指示を削除した場合、右のオプションが返されます – Herrgott