2017-03-09 10 views
0

バックエンド(Symfony)で選択するオプションをどのように初期化することができますか?今、私は何をすべきng-init="myselect='0'" のように私はng-initで実際の選択オプションを設定する必要がありますが、私はng-initディレクティブを削除した場合、それは価値? undefined:undefined ?
と空のオプションを作成します(ng-model="myselect"例)私の選択を初期化?これは、あなたが期待したものであるAngularjsを使用してバックエンドから選択したオプションを取得

+0

はちょうどuは私が欲しい@gauravデフォルト –

+0

で選択したいものは何でもコントローラでモデルの値を設定しますページをリフレッシュして選択値を記憶するフィルタを作成します。フォーム提出後に、選択されたオプションを右に戻して選択しますが、角度はそれを上書きします。私がng-init = 0を使用すると、選択されたオプションはvalue = '0'のオプションになります.ng-initを削除すると、既にデフォルトで選択されている空のオプションが作成され、バックエンドの応答が上書きされます。 – Herrgott

+0

選択されたバックエンドからすべての角度指示を削除した場合、右のオプションが返されます – Herrgott

答えて

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