Javascript 角度ng选项选择选项视觉反馈问题
因此,我在获得适当的视觉反馈以及期望的数据绑定行为方面遇到了问题。这是我的密码:Javascript 角度ng选项选择选项视觉反馈问题,javascript,angularjs,Javascript,Angularjs,因此,我在获得适当的视觉反馈以及期望的数据绑定行为方面遇到了问题。这是我的密码: <div ng-app="myTestApp" ng-controller="myTestCtrl"> <!-- selected value is site.name --> <h3>Selected value is site.name property</h3> <select ng-model="testSelect" ng-op
<div ng-app="myTestApp" ng-controller="myTestCtrl">
<!-- selected value is site.name -->
<h3>Selected value is site.name property</h3>
<select ng-model="testSelect" ng-options="site.name as site.name for site in sites track by site.name">
<option value="">Please choose a site</option>
</select>
<div ng-bind="testSelect"></div>
<hr/>
<!-- Selected value is site object itself -->
<h3>Selected value is the site object itself</h3>
<select ng-model="testSelectTwo" ng-options="site.name for site in sites track by site.name">
<option value="">Please choose a site</option>
</select>
<div ng-bind="testSelectTwo"></div>
</div>
下面是以上所有内容的中间部分:
现在我想要的是为ng模型提供site.name属性供我使用(使用上述代码的JSFIDLE示例的上半部分),但我还想要实际选择更改的视觉反馈(JSFIDLE示例的下半部分)
到目前为止,我还没有想到一个解决方案。删除您的
track by
子句。这就是造成问题的原因
“跟踪方式”是指当您可能有不同的对象时,这些对象应被视为相等对象。使用第二个示例,如果我执行以下操作:
$scope.site={id:1,名称:“site 3”,链接:'}代码>
它将使id为3的站点处于选中状态。这是因为我们正在跟踪的名称
小提琴手:我不明白这里的目标是什么。“你能解释得更清楚些吗?”詹姆斯克利肯定。例如,我希望能够从下拉列表中选择Site 1(sites中第一个Site对象的Site.name)。我希望ng模型包含site.name属性。但问题是,如果我让它像那样绑定,实际的select下拉列表不会给我任何关于我选择的视觉反馈。ng模型变化很好,但同样没有视觉反馈。将此与ng模型被赋予整个站点对象本身(在JSFIDLE的下半部分)时进行比较。您所说的“视觉反馈”是什么意思?选择下拉列表显示了我的选择。在上半部分,尽管我选择了,它仍然是“请选择一个站点”。Ng模型已绑定到site.name(如我所需),但没有视觉反馈(即,它仍然显示“请选择…”)。在下半部分,它会改变(我想要的视觉反馈),但这只是因为它是整个对象本身传递给ng-model的。啊,好的。哇,我花了很多时间思考这是多么令人头痛,这是因为追踪。非常感谢!
var app = angular.module('myTestApp', []);
app.controller('myTestCtrl', ['$scope', function ($scope) {
$scope.sites = [
{id: 1, name: 'Site 1', link: 'http://url'},
{id: 2, name: 'Site 2', link: 'http://url'},
{id: 3, name: 'Site 3', link: 'http://url'}
];
}]);