AngularJs将新的Item.push()转换为选择选项

时间:2015-04-19 14:32:44

标签: angularjs

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;

0 个答案:

没有答案