angularjs - ng-options 添加 "string:"值并且不更新 ng-model

标签 angularjs

我有这样的数据:

"RequirementLevels": {
 "285960000":"Black",
 "285960001":"Green",
 "285960002":"Blue",
 "285960003":"Purple"
}

我有一个像这样的选择:

<select ng-options="key as value for (key , value) in Variables.Template.RequirementLevels"
        ng-model="Variables.EditingNode.RequirementLevel"
        ng-model-options="{ debounce: 300 }"></select>
<span>"{{Variables.EditingNode.RequirementLevel}}"</span>

这会产生以下 html: enter image description here

请注意选择选项中每个值前面的字符串:。使用下面的代码我没有得到值中的string:

<select ng-model="Variables.EditingNode.RequirementLevel">
     <option ng-repeat="(key, value) in Variables.Template.RequirementLevels" value="{{key}}">{{value}}</option>
</select>

我的问题是为什么我会在 ng-option 列表中得到 string: 以及如何让它消失。

更新,因为评论:我想更改此设置的原因是因为当值中包含 string: 时,ng-model 值不起作用。我认为这是因为它与模型中的“123”选项集中的“string:123”不匹配。

更新2

这是创建选择的 Html。

<div class="form-group input-group">
    <label for="ReviewDone">Requirement level</label>
    <select ng-options="key as value for (key , value) in Variables.Template.RequirementLevels track by key"
            ng-model="Variables.EditingNode.RequirementLevel"
            ng-model-options="{ debounce: 300 }"></select>
    <span>"{{Variables.EditingNode.RequirementLevel}}"</span>
</div>

这将创建带有选项的选择,但不会选择默认值。然而,它下面显示 ng-model 变量内容的跨度工作正常,并打印选项列表中的数字“285960002”,因此应该从列表中选择它。

上面的代码生成以下 HTML:

<div class="form-group input-group">
    <label for="ReviewDone">Requirement level</label>
    <select class="ng-pristine ng-untouched ng-valid" ng-model="Variables.EditingNode.RequirementLevel" ng-model-options="{ debounce: 300 }" ng-options="key as value for (key , value) in Variables.Template.RequirementLevels track by key"><option selected="selected" value="?"></option><option value="285960000" label="Black">Black</option><option value="285960001" label="Green">Green</option><option value="285960002" label="Blue">Blue</option><option value="285960003" label="Purple">Purple</option></select>
    <span class="ng-binding">"285960002"</span>
</div>

此外,在选择中选择不同的值也会更改范围中的值,因此它会更新该值,但在加载时不会读取它。

最佳答案

如果您想让这个附加字符串按照您的要求消失,请使用按键跟踪

<select ng-options="key as value for (key , value) in Variables.Template.RequirementLevels track by key"

请参阅 plunker 以供引用

http://plnkr.co/edit/fi8lLyjkS0y3hfX7aeNI?p=preview

关于angularjs - ng-options 添加 "string:"值并且不更新 ng-model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37791454/

相关文章:

javascript - Angular js 在返回之前等待数据

AngularJS:从 Controller 加载 View ?

javascript - 在 Angular 中使用 toFixed() 不起作用

javascript - 正确使用 ng-submit

javascript - 使用 django 和 angularjs 渲染 html 模板时出现 TemplateSyntaxError

javascript - 解决 Protractor 中的 cucumber promise

javascript - 如何在 Angular Modal 服务中将输入值传递给 Controller

javascript - 如何修复预期响应以包含数组但得到一个对象ANgular js

JavaScript - 过去 12 个月的列表

jquery - AngularJS .focus() 在链接函数中不起作用