Javascript 从控制器中选择“选择框”选项
我做了很多搜索,并尝试了数十亿种不同的谷歌搜索组合,但在这个问题上我能找到的只是如何在选择框中设置默认选项 我有一个页面,管理员可以从用户列表中选择一个用户,然后Angular JS获取该用户的用户id(使用ng change),通过POST将其发送到DB,然后目标是将其他输入的值更改为DB中的值。我有这些值,但在使用该值使我的状态选择框更改为用户状态时遇到了问题 有关JS:Javascript 从控制器中选择“选择框”选项,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我做了很多搜索,并尝试了数十亿种不同的谷歌搜索组合,但在这个问题上我能找到的只是如何在选择框中设置默认选项 我有一个页面,管理员可以从用户列表中选择一个用户,然后Angular JS获取该用户的用户id(使用ng change),通过POST将其发送到DB,然后目标是将其他输入的值更改为DB中的值。我有这些值,但在使用该值使我的状态选择框更改为用户状态时遇到了问题 有关JS: $scope.getUserInfo = function(user_id) { thi
$scope.getUserInfo = function(user_id) {
this.user_id = user_id;
$http.post("lib/scripts/managing_user.php", {func: 'retrieve_user_info', user_id: this.user_id}).
success(function(data) {
console.log(data);
$scope.is_active = data['0']['active'];
//Interacts with the ng-checked directive. It takes a bool, and data returns 0 or 1 in active.
$scope.username = data['0']['username'];
//Assigns the data value to the ng-model directive with the value username
//Have to treat data as a 2D array because that is how it is returned
$scope.email = data['0']['email'];
$scope.fName = data['0']['first_name'];
$scope.lName = data['0']['last_name'];
$scope.schoolList = data['0']['school_id']; (<-Does not work)
}).
这是我想要更改的选择框
<div class="row-fluid">
<span class="adduser_heading">School:</span>
<select id="school" class="adduser_input" ng-model="user.schoolList" ng-options="name.school_name for (key, name) in schoolList" ng-disabled="is_disabled" name="school" style="width: 246px;"></select>
</div>
这是DB返回的关于学校的信息的格式。我真的不想发布“数据”,因为它有一个真实的人的信息。基本上,有关学校的信息如下所示
school_id: "106"
school_name: "Central Campus High School"
当您将默认值分配给
$scope.schoolList
时,您的ng模型被设置为user.schoolList
它应该是$scope.user.schoolList
如果要使用find函数,仍然需要返回正确的对象,而不仅仅是名称;你需要修复你的函数。因此,类似这样的方法应该有效:
$scope.findInSchoolList = function(school_id) {
for(var i = 0; i < $scope.schoolList.length; i++) {
if ($scope.schoolList[i].school_id == school_id) {
return $scope.schoolList[i];
}
}
};
$scope.findInSchoolList=函数(学校id){
对于(变量i=0;i<$scope.schoolList.length;i++){
if($scope.schoolList[i].school\u id==学校id){
返回$scope.schoolList[i];
}
}
};
下面是一个工作示例:
angular.module('app',[])
.controller('Ctrl',函数($scope){
var findInSchoolList=函数(学校id){
对于(变量i=0;i<$scope.schoolList.length;i++){
if($scope.schoolList[i].school\u id==学校id){
返回$scope.schoolList[i];
}
}
};
$scope.schoolList=[{
学校编号:“1”,
学校名称:“中央校区高中”
}, {
学校编号:“106”,
学校名称:“另一所高中”
}, {
学校编号:“231”,
学校名称:“又一所高中”
}, {
学校编号:“23”,
学校名称:“正确的高中”
}, {
学校编号:“2”,
学校名称:“最后一所高中”
}]
$scope.user={
学校名单:findInSchoolList(23)
}
})
学校:
您必须从填充列表的数组中选择项目,例如,如果您有:
$scope.school_list = [{id:1, name:'harvard'}, {id:2, name:'other'}]
并且您要使用以下选项进行选择:
$scope.user.schoolList = {id:1, name:'harvard'}
它不起作用,您必须创建一个函数,在数组中查找元素,然后将其分配给$scope.user.schoolList变量(该变量绑定到列表的ng模型)
你必须这样做:
$scope.user.schoolList = findInSchoolList({id:1, name:'harvard'})
它将从选择列表中选择项目
希望对您有所帮助谢谢您的回复。我确实试过(刚才又试了一次),但没有成功。选择框保留在默认选项(空白点),而不是前往所选用户的学校。不客气。这可能是因为您没有为其指定正确的对象。您没有指定学校列表的外观,但请确保user.schoolList引用选项列表对象中的元素。我按照您的建议,使findInSchoolList函数如您所说。我得到了学校的名称(来自一个由school_name和school_id组成的对象数组),并仅将名称返回到$scope.user.schoolList。试过了,什么都没有。所选选项未更改。否,因为必须从原始数组返回完整对象
$scope.user.schoolList = {id:1, name:'harvard'}
$scope.user.schoolList = findInSchoolList({id:1, name:'harvard'})