Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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 角度ng选项选择选项视觉反馈问题_Javascript_Angularjs - Fatal编程技术网

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'}
    ];
}]);