Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Angularjs从后端获取所选选项_Javascript_Angularjs_Symfony - Fatal编程技术网

Javascript 使用Angularjs从后端获取所选选项

Javascript 使用Angularjs从后端获取所选选项,javascript,angularjs,symfony,Javascript,Angularjs,Symfony,如何初始化在后端选择的select with选项(Symfony)。现在我初始化我的select(ngmodel=“myselect”example),比如nginit=“myselect='0' 我需要在ng init中设置实际选择的选项,但如果我删除ng init指令,它将创建值为的空选项?未定义:未定义? 我该怎么办 <div ng-app="myapp"> <fieldset ng-controller="FirstCtrl"> <sele

如何初始化在后端选择的select with选项(Symfony)。现在我初始化我的select(
ngmodel=“myselect”
example),比如
nginit=“myselect='0'
我需要在
ng init
中设置实际选择的选项,但如果我删除
ng init
指令,它将创建值为
的空选项?未定义:未定义?

我该怎么办

<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>
这就是你所期望的。。
还可以通过此链接检查

我能够解决此问题

匿名函数,该函数使用我自己的函数将普通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;
}

只需在控制器中设置您想要选择的模型值default@gaurav我想制作一个过滤器,通过页面刷新来记忆select值。在表单提交后,选择“使用右选择返回”选项,但角度会覆盖该选项。如果我使用ng init=0,选定选项将成为值为0的选项,如果我删除ng init,它将创建默认已选择的空选项并覆盖后端响应。如果我从select后端删除所有角度指令,则返回右侧选定选项我无法设置选项的任何属性,他们会在服务器上自动生成select模型值并将其保存到localsotrage,在页面上重新加载检查值是否存在,以及是否将值设置为model,这与我想要的不完全一样。这是客户端对象定义。我需要从
url
设置选择值。我只看到两种可能的解决办法:1。使用localstorage 2。使用url分解,我认为这是获得默认html值的更优雅的方法
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;
}
{{- form_widget(form, {'attr': attr|merge({'class': 'filter__select filter__select_range', 'data-model': 'FilterCollection.range.area.min', 'data-change': "checkSelectedFilters();"})}) -}}