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