Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 AngularJS select似乎需要在同一对象上匹配以设置所选选项_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS select似乎需要在同一对象上匹配以设置所选选项

Javascript AngularJS select似乎需要在同一对象上匹配以设置所选选项,javascript,angularjs,Javascript,Angularjs,最近我问了一个问题,为什么我的angular select没有使用保存的答案设置我的select 这是我的选择: <select ng-model="question.answer" ng-options="opt as opt.Value for opt in question.options" /> 单击“setToThirdAnswer”按钮后,输出记录到控制台: 它是相同的结构,但不是相同的对象。因此,我想知道模型中的对象是否必须与其中一个选项完全

最近我问了一个问题,为什么我的angular select没有使用保存的答案设置我的select

这是我的选择:

        <select ng-model="question.answer" ng-options="opt as opt.Value for opt in question.options" />     
单击“setToThirdAnswer”按钮后,输出记录到控制台:

它是相同的结构,但不是相同的对象。因此,我想知道模型中的对象是否必须与其中一个选项完全相同

。该按钮将答案设置为对选项对象之一的引用

因此,我很高兴我发现了为什么我的选择在页面刷新后没有设置所选值,但现在我真的很想知道(这一定是一个非常常见的用例):

如果我的选项是对象,并且我将整个对象设置为
ng model
,那么我如何使用保存的json重新呈现表单,而无需首先在客户端进行一些处理

var json = question = {
    options: [
       {
           id: 1,
           Value: "One"
       },
       {
           id: 2,
           Value: "Two"
       },
       {
           id: 3,
           Value: "Three"
       }
   ],
   answer: {
               id: 3,
               Value: "Three"
           }
};

因为answer对象和options数组的第三个值不是同一个对象,但是您不能用json表示引用(可以吗?)。

是的,您需要具有相同的引用。您可以这样做:

question.answer = question.options[2]

直接在您创建它之后。

ng options属性有一个
track by
表达式,用于执行您所说的操作:

ng-options="opt as opt.Value for opt in question.options track by opt.id"

查看更新的fiddle:

这通常是完全错误的,如果项目顺序发生变化,硬编码索引是个坏主意!!
question.answer = question.options[2]
ng-options="opt as opt.Value for opt in question.options track by opt.id"