Select不会自动更新使用ng-repeat呈现的ng-model更改
Select does not auto update on ng-model change rendered using ng-repeat
我在指令中创建下拉菜单,如下所示:
<select ng-model="selectedSite">
<option value="new">Add New Site</option>
<option value="line" disabled>------------------------</option>
<option ng-repeat="site in defaultSites"
value="{{$index}}">
{{site.name}}
</option>
</select>
指令是:
app.directive('siteForm', function() {
return{
restrict: 'E',
replace: true,
scope: {
site: '=',
defaultSites: '=',
selectedSite: '=',
},
templateUrl: '/views/templates/site_form.html',
link: function($scope, element, attrs) {
$scope.$watch('selectedSite', function(newValue, oldValue) {
console.log('Site selected:', newValue);
if (newValue !== undefined && newValue !== null) {
if (newValue !== "new") {
var value = $scope.defaultSites[parseInt(newValue)];
$scope.site.name = value.name;
} else {
$scope.site.name = "";
}
}
});
}
};
});
然而,当我在selectedSite中提供初始索引时,它不起作用,总是显示第一个选项。例如,如果我们将selectedSite设置为"1",那么值为"1"的选项应该被选中,而这是不会发生的。
其他一切工作正常,包括$watch和selectedSite得到填充,当我从下拉菜单中选择选项
我使用AngularJS v1.2.10。
尝试按以下方式使用ng-selected
<option ng-repeat="site in defaultSites" value="{{$index}}" ng-selected="{{$index == selectedSite}}">
{{site.name}}
</option>
尝试在$watch
处理程序结束时调用$scope.$apply()
。
参见AngularJS文档中的Scope。
相关文章:
- 在Angularjs中,我如何使用ng repeat、ng model和ng click来动态更改内容
- 将我的列表 vom ng-repeat 更改为收集重复 ng-click 后,无法正常工作
- AngularJS ng repeat没有't在LocalStorage更改时更新(使用store.js)
- 更改变量的名称,就像在 ng-repeat 中一样,但不重复
- Angular JS和Ionic-从ng-repeat动态更改img src
- 如果我在数组前面加上 ng-repeat,除非我更改浏览器窗口,否则$apply不会呈现 ng-repeat
- AngularJS指令:如何在ng-repeat中动态更改元素html
- AngularJS:如何使用ng-repeat在点击时更改按钮文本
- Angularjs ng-repeat-start 不会在模式更改时清理旧视图
- Angularjs-ng repeat不反映属性数组中的更改
- AngularJS ng repeat没有't在状态更改时更新
- 动态更改ng repeat内部的按钮标签
- angular ng repeat需要更改从json获得的数据
- 如何将json数据值从ng repeat更改为其他值
- 从ng repeat内部的输入多次调用ng更改函数
- Angularjs ng repeat没有't在模型更改时更新
- 如何更改特定背景色
在AngularJS中使用ng-repeat - 使用AngularJS指令来更改ng-repeat元素的类
- 更改重复的$scope数组,但会影响原来的ng-repeat
- 如何在ng-repeat中更改$scope值