Javascript Ng模型未在选择内更新

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模型变量需要与选项集合分开并区分开来。然后,您将在控制器中引用该模型来处理当前相册。选择

我的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="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 }}