【发布时间】:2014-07-01 06:41:36
【问题描述】:
我最近问了一个问题in this post,关于为什么我的角度选择没有使用保存的答案设置我的选择。
这是我的选择:
<select ng-model="question.answer" ng-options="opt as opt.Value for opt in question.options" />
pkozlowski.opensource 对this stackoverflow post 的回答让我想到我选择的ng-model 中设置的值与@987654327 中作为选项传递的任何值都不匹配@ 我的选择。
我创建了this jsfiddle that should highlight the issue。每当更改答案时,答案对象都会记录到控制台。 (请注意,由于某种原因,它在 jsfiddle 中被记录了两次,但当我在我的机器上本地运行相同的代码时,它只被记录一次)
可以看到,当按钮被按下时,退出的答案是和第三个选项一样的对象结构,但是选择列表设置为空白选项。
将选择列表设置为第三个选项后记录到控制台的输出:
answer is: picklistTest.js:25
Object {id: 3, Value: "Three"}
点击“setToThirdAnswer”按钮后输出记录到控制台:
answer is: picklistTest.js:25
Object {id: 3, Value: "Three"}
它是相同的结构,但不是相同的对象。所以我想知道模型中的对象是否必须与选项之一完全是同一个对象。
This second jsfiddle shows that that is the case。该按钮将答案设置为对选项对象之一的引用。
所以,我很高兴我发现了为什么我的选择在页面刷新后没有设置选定的值,但现在我真的很想知道(而且这必须是非常常见的用例):
如果我的选项是对象并且我将整个对象设置为ng-model,我如何在不先在客户端进行一些处理的情况下使用保存的 json 重新呈现表单?
var json = question = {
options: [
{
id: 1,
Value: "One"
},
{
id: 2,
Value: "Two"
},
{
id: 3,
Value: "Three"
}
],
answer: {
id: 3,
Value: "Three"
}
};
因为答案对象和选项数组的第三个值不是同一个对象,但是不能用json表示引用(可以吗? )。
【问题讨论】:
标签: javascript angularjs