Javascript 使用Angularjs从后端获取所选选项
如何初始化在后端选择的select with选项(Symfony)。现在我初始化我的select(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
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();"})}) -}}