AngularJS相当新,第一次在这里发帖。在数据输入页面上,我显示一个选择列表,其中列表中的选项来自数组。数组可以添加需要在选择列表中反映的项目。我可以看到这些项目正在添加到数组中,但是如果没有重新加载整个页面,则选项列表不会更新。
如何在初始化后更新或刷新选择选项列表?
<select ng-model="VendorsController.selectedVendor.Items.selectedItem.locno"
style="width:300px;"
size="1"
ng-options="opt.value as opt.label for opt in VendorsController.selectedVendor.Locations"
required >
</select>
新项目通过回调保存在服务器上,promiss具有以下语句将新(位置)项目推送到数组上。
_this.selectedVendor.Locations.push(_this.selectedVendor.Locations.selectedLoc);
数组反映新项目已正确推送但选项列表未显示。有什么建议吗?
以下是关于我在push()上调用的地方的一些额外代码。
this.SaveLocation = function(){
$http.post('cfm/callback4.cfmx', _this.selectedVendor.Locations.selectedLoc ).
success(function (data, status, headers, config) {
// if new location pk now reflects valid data
_this.selectedVendor.Locations.selectedLoc = data;
//console.log(data);
//console.log(status);
//console.log(config);
// add location to list
if (_this.selectedVendor.Locations.addNew) {
_this.selectedVendor.Locations.selectedLoc.value = data.locno
// this push is not showing up on the locations options
_this.selectedVendor.Locations.push(_this.selectedVendor.Locations.selectedLoc);
}
// must reset after promiss is returned
_this.selectedVendor.Locations.originalLoc = undefined;
_this.selectedVendor.Locations.selectedLoc = undefined; // null;
_this.selectedVendor.Locations.addNew = false ;
}).
error(function (data, status, headers, config) {
// log error
console.log(data)
console.log(status)
console.log(config)
});
}; // end SaveLocation
我的表单按钮调用上述功能。
<button ng-show="VendorsController.selectedVendor.Locations.selectedLoc" class="btn btn-default" data-dismiss="modal" ng-click="VendorsController.SaveLocation()">Save</button>
以下是我创建控制器的方法......一位了解AngularJS的朋友建议我在调用控制器函数内的属性时使用_this ...与范围有关或者至少是我理解它的方式。
app.controller('VendorsController', ['$scope', '$window', '$http', '$routeParams', '$location', 'state','$timeout','$upload', function ($scope, $window, $http, $routeParams, $location, state, $timeout,$upload) {
var _this = this; // the controller
this.name = "VendorsController";
this.params = $routeParams;