Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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/7/user-interface/2.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 为什么我的select ng型号不反映我选择的ng选项?_Javascript_Angularjs - Fatal编程技术网

Javascript 为什么我的select ng型号不反映我选择的ng选项?

Javascript 为什么我的select ng型号不反映我选择的ng选项?,javascript,angularjs,Javascript,Angularjs,我试图让此代码在我的选择ng选项中提供一个值: <select ng-model="selectedMovieId" ng-if="movies.length>0" ng-options="movie.id as movie.title for movie in movies track by movie.id"></select> <div> {{selectedMovieId||'No movie selected'}} </d

我试图让此代码在我的
选择ng选项中提供一个值

<select ng-model="selectedMovieId" ng-if="movies.length>0" ng-options="movie.id as movie.title for movie in movies track by movie.id"></select>
  <div>
    {{selectedMovieId||'No movie selected'}}
  </div>
和html:

<div ng-app="movieApp" ng-controller="movieCtrl">
  <input type='text' ng-model='queryString' ng-submit="searchMovie()">
  <button ng-click="searchMovie()">
    Search
  </button>
  <hr/>
  <select ng-model="selectedMovieId" ng-if="movies.length>0" ng-options="movie.id as movie.title for movie in movies track by movie.id">
  </select>
  <div>
    {{selectedMovieId||'No movie selected'}}
  </div>
  <button ng-if="movies.length>0" ng-click="getCredits()">
    Get Credits
  </button>
</div>

搜寻

{{selectedMovieId | |“未选择电影”} 获得学分

还有我一直工作的地方。为什么
ng模型不更新?

如果没有提供一些数据,演示将无法工作,但是我怀疑您的问题是违反了始终在
ng模型中使用对象的黄金法则

ng如果
创建了一个子作用域,子作用域将像您当前所做的那样破坏原语上的双向绑定


在控制器中设置一个对象,这样继承将与后续子作用域一起工作,然后在视图中将
ng模型
绑定到该对象

如果没有提供一些数据,演示将无法工作,但是我怀疑您的问题是违反了始终在
ng模型
中使用对象的黄金法则

ng如果
创建了一个子作用域,子作用域将像您当前所做的那样破坏原语上的双向绑定


在控制器中设置一个对象,这样继承将与后续子作用域一起工作,然后在视图中将
ng model
绑定到该对象中@charlietfl的答案是正确的
ng,如果
创建了子作用域,您将无法像那样访问您的
selectedMovieId

如果出于某种原因需要使用基元类型进行绑定,可以按如下方式更改绑定(这只是一种解决方法)


对@charlietfl的回答非常准确
ng,如果
创建了子作用域,您将无法像那样访问您的
selectedMovieId

如果出于某种原因需要使用基元类型进行绑定,可以按如下方式更改绑定(这只是一种解决方法)



demo甚至不会加载任何电影来显示您选择的内容。我们应该如何评估发生了什么?注意。。。。始终在
ng model
中使用对象,这是因为我删除了API键。我将再次尝试使用对象作为
ng模型
,但我只在该对象与
ng repeat
范围中的名称重叠时被刺痛过。但您没有意识到
ng if
创建子范围,这可能是您的全部问题。我打赌使用对象解析issue@charlietfl你说得对——我没有意识到这一点。明天早上我再试试。谢谢。演示不会加载任何电影来显示您选择的内容。我们应该如何评估发生了什么?注意。。。。始终在
ng model
中使用对象,这是因为我删除了API键。我将再次尝试使用对象作为
ng模型
,但我只在该对象与
ng repeat
范围中的名称重叠时被刺痛过。但您没有意识到
ng if
创建子范围,这可能是您的全部问题。我打赌使用对象解析issue@charlietfl你说得对——我没有意识到这一点。明天早上我再试试。谢谢。使用
$parent
是一种代码气味。。。最佳实践建议在控制器中设置对象。如果将另一个子范围放在中间,则可以依赖继承,但您的方法将意味着添加< > $$Pr.$父< /代码>。它很难看,在HTML模板中使用它会让事情变得混乱和疯狂。我不得不使用它的唯一“好”原因是在处理小模板时,包括使用ng include的其他模板(也很小)。它们非常小,使用$parent变得非常清楚,它指向控制器对象的位置也非常清楚,并且不需要弄清楚父链是什么。最佳实践建议所有模型无论如何都应该是对象使用
$parent
是一种代码气味。。。最佳实践建议在控制器中设置对象。如果将另一个子范围放在中间,则可以依赖继承,但您的方法将意味着添加< > $$Pr.$父< /代码>。它很难看,在HTML模板中使用它会让事情变得混乱和疯狂。我不得不使用它的唯一“好”原因是在处理小模板时,包括使用ng include的其他模板(也很小)。它们非常小,使用$parent变得非常清楚,它指向控制器对象的位置也非常清楚,并且不需要弄清楚父链是什么。最佳实践表明,所有模型都应该是对象
<div ng-app="movieApp" ng-controller="movieCtrl">
  <input type='text' ng-model='queryString' ng-submit="searchMovie()">
  <button ng-click="searchMovie()">
    Search
  </button>
  <hr/>
  <select ng-model="selectedMovieId" ng-if="movies.length>0" ng-options="movie.id as movie.title for movie in movies track by movie.id">
  </select>
  <div>
    {{selectedMovieId||'No movie selected'}}
  </div>
  <button ng-if="movies.length>0" ng-click="getCredits()">
    Get Credits
  </button>
</div>