AngularJS在模态输入后更新选择控件

AngularJS在模态输入后更新选择控件,angularjs,Angularjs,这是我表单的选择控件: <select ng-model="truckMfg.truckMfgs" ng-options="truckMfg.Name for truckMfg in truckMfgs"> <option value="" selected>Select Truck Manufacturer ..</option> </select> function TruckMfgCtrl($scope, $routeParams

这是我表单的选择控件:

<select ng-model="truckMfg.truckMfgs" ng-options="truckMfg.Name for truckMfg in truckMfgs">
   <option value="" selected>Select Truck Manufacturer ..</option>  
</select>
function TruckMfgCtrl($scope, $routeParams, $http, API, $location)  {

$scope.truckMfgs = API.GetTruckMfgs(); // <-- this works at initialization

$scope.save = function () {
    $http.post('/api/TruckMfgs/', $scope.truckMfg)  // data does get saved corectly
        .success(function () {
        })
        .error(function (data) {
            alert(data);
        });

    setTimeout(function () {
        $scope.truckMfgs = API.GetTruckMfgs(); // <-- this is not working
        $scope.$apply();
    }, 1000);
};
尊敬的,你能给我看看你推荐的代码吗?谢谢


(PS:查看了您的个人资料,我也喝cawfee并带我的dawghter去mawl,但不是在挪威):我认为没有必要在save()中调用GetTruckMfgs(),因为您已经有了需要添加到TruckmKmfgs列表中的数据。因此,让save()将
$scope.truckMfg
添加到
$scope.truckMfgs
。这样可以避免再次访问服务器


如果要确保在更新选择列表之前成功发布数据,可以在success()回调中执行此操作。如果希望用户界面更新更快(即响应更快),可以在save函数中的post()调用之前(或之后)执行此操作,然后处理错误回调中的任何错误(例如,如果post()失败,则从选择列表中删除项)。

您尝试的操作看起来是正确的。如果在添加$scope.truckMfg后记录$scope.truckMfgs,它看起来正确吗?如果是这样的话,那么我需要查看更多的代码来进一步帮助您。我住在新泽西州中部,所以我没有口音:)类型错误:Object[Object Object],[Object Object],[Object Object],[Object Object],[Object Object],[Object Object],[Object Object Object],[Object Object Object],[Object Object Object],[Object Object Object Object],[Object Object Object Object Object Object]没有“append”方法对不起,尝试用push()代替append()推送没有错误。然而,当模式关闭时,我查看TruckMmfgs下拉列表,新创建的Mfg不在那里,只有在我刷新页面时才在那里-同样,这是我不想做的事情。你能举起小提琴或弹弓吗?(不要担心服务器界面不工作,只需在控制器中硬编码一个示例truckMfg对象。我将用$timeout模拟post()调用。)标记,在将输入表单添加到主表单而不是模态上后,它立即更新了作用域,因此,模态有问题,但您的代码解决方案是合理的。-谢谢
$scope.save = function () {
    $http.post('/api/TruckMfgs/', $scope.truckMfg)
        .success(function () {
            $scope.truckMfgs.append($scope.truckMfg);
            console.log($scope.truckMfg);
        })
        .error(function (data) {
            alert(data);
        });
};