Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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 更改时下拉框重置为空选择的问题_Javascript_Angularjs - Fatal编程技术网

Javascript 更改时下拉框重置为空选择的问题

Javascript 更改时下拉框重置为空选择的问题,javascript,angularjs,Javascript,Angularjs,我有一个问题,下拉框使用ng模型和改变索引的下拉列表,而仍然能够使用下拉列表 例如,我可以使用以下代码()更改下拉列表的索引。但是,当我更改索引时,它默认返回为空选择,然后拒绝让我选择任何其他内容 HTML: 但是如果我删除track by item.id,我可以手动更改索引,但不能再使用按钮()更改索引 基本上,我想同时做这两件事,但我有点不知所措了。应该是$scope.receivedselect=$scope.receivedoptions[0].id因为选择元素的模型包含所选选项的值

我有一个问题,下拉框使用ng模型和改变索引的下拉列表,而仍然能够使用下拉列表

例如,我可以使用以下代码()更改下拉列表的索引。但是,当我更改索引时,它默认返回为空选择,然后拒绝让我选择任何其他内容

HTML:

但是如果我删除
track by item.id
,我可以手动更改索引,但不能再使用按钮()更改索引


基本上,我想同时做这两件事,但我有点不知所措了。

应该是
$scope.receivedselect=$scope.receivedoptions[0].id因为选择元素的模型包含所选选项的值

var myApp=angular.module('myApp',[]);
myApp.controller('MyCtrl',函数($scope){
$scope.receivedOptions=[
{id:0,名称:“否”},
{id:1,名称:“是”}
];                          
$scope.ChangeIndex=函数(){
$scope.receivedSelect=$scope.receivedOptions[0].id;
}
});

变化指数

这在ng选项的情况下有效,因为它不会创建如中所述的新范围,但我的其余部分对ng model指令和任何创建新范围的指令有效:(如果对数组中的每个项重复ng,它将创建一个新的子范围,您可以阅读此机制)但这始终是一个值得遵循的好模式

如果您不通过一个对象,那么子作用域将在这里创建自己的值
ReceivedSelect
这是一种JavaScript行为,这就是为什么您必须将其更改为对象的属性,如
sct.ReceivedSelect

<div ng-app="myApp" ng-controller="MyCtrl">

<select ng-model="sct.RecievedSelect" ng-options="item as item.name for item in RecievedOptions track by item.id"></select>
<button ng-click="ChangeIndex()">Change index</button>
</div>
看看这个JSFIDLE:


现在这很有道理。我没有想到我在重写选中的布尔。非常感谢。
    $scope.RecievedOptions  = [
                              {id : 0, name: "No"}, 
                              {id : 1, name: "Yes"} 
                            ];

    $scope.ChangeIndex = function()
  {
        $scope.RecievedSelect = $scope.RecievedOptions[0];
  }
<div ng-app="myApp" ng-controller="MyCtrl">

<select ng-model="sct.RecievedSelect" ng-options="item as item.name for item in RecievedOptions track by item.id"></select>
<button ng-click="ChangeIndex()">Change index</button>
</div>
var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function ($scope) {
$scope.RecievedOptions  = [
                              {id : 0, name: "No"}, 
                              {id : 1, name: "Yes"} 
                            ];
    $scope.sct = {RecievedSelect : $scope.RecievedOptions[0]};                                
    $scope.ChangeIndex = function() {
     $scope.sct.RecievedSelect = $scope.RecievedOptions[0];
    }
});