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>