Javascript Ng模型未在选择内更新
我的HTML中有以下select元素:Javascript Ng模型未在选择内更新,javascript,angularjs,Javascript,Angularjs,我的HTML中有以下select元素: <select ng-if="useFlickr" class="span6" ng-model="flickrAlbum" ng-options="item.PhotosetId as item.Title for item in flickrAlbums"></select> 但是我的模型flickrAlbum在我更改值时不会更新。您的ng模型变量需要与选项集合分开并区分开来。然后,您将在控制器中引用该模型来处理当前相册。选择
<select ng-if="useFlickr" class="span6" ng-model="flickrAlbum" ng-options="item.PhotosetId as item.Title for item in flickrAlbums"></select>
但是我的模型flickrAlbum在我更改值时不会更新。您的ng模型变量需要与选项集合分开并区分开来。然后,您将在控制器中引用该模型来处理当前相册。选择过程不会修改集合本身
<select ng-if="useFlickr" class="span6" ng-model="selectedAlbum" ng-options="item.PhotosetId as item.Title for item in flickrAlbums"></select>
问题是ngIf指令创建了一个新的子作用域。因此,您定义的
ng model=“flickrAlbum”
指向内部范围(并对其进行更新)。但是,它不会影响原始的外部范围模型
因此,您可以使用$parent reference获取原始模型:
<select ng-if="useFlickr" class="span6"
ng-model="$parent.flickrAlbum"
ng-options="item.PhotosetId as item.Title for item in flickrAlbums"></select> {{ flickrAlbum }}
{{flickrAlbum}
。。或者在控制器中预初始化模型(但是,请注意,您可能需要将整个对象作为ngModel值传递,而不是将当前方法仅使用
PhotosetId
作为模型) JS中的ng
是什么?请提供所有相关代码。始终在ng model
中使用对象,因为任何子作用域都会破坏双向绑定。控制器中的getFlickrAlbums方法是什么?ng在哪里申报?ng不应该是$scope吗?不客气,这是个棘手的问题。ngIf/ngInclude/ngSwitch会创建新的作用域,因此需要记住这一点。
<select ng-if="useFlickr" class="span6"
ng-model="$parent.flickrAlbum"
ng-options="item.PhotosetId as item.Title for item in flickrAlbums"></select> {{ flickrAlbum }}