Angularjs ng-repeat和ng-options无法在select

时间:2016-09-12 18:38:09

标签: angularjs scope ng-repeat angular-ngmodel ng-options

我正在尝试使用select从表单中获取某些$ scope的值,但我得到的是未定义的值,请帮助我。

ANGULAR JS

在此代码中,我在提交表单时调用agregarMuestra(),但是当使用选择时,$ scope.nuevo_muestra与任何内容都不匹配,仅适用于输入

.controller('ctrlRegm',function($scope, $state, $http){
    $scope.tipos = [{"tipo":"sangre"}, {"tipo":"heces"}, {"tipo":"orina"}];
    $scope.nuevo_muestra = {};

    $scope.agregarMuestra = function() {
        console.log($scope.nuevo_muestra); //print empty array
        console.log($scope.nuevo_muestra.tipo); //print undefined

        $http.post("/muestra", {
            tipo: $scope.nuevo_muestra.tipo,

        }).success(function(response){
            $scope.muestras.push(response);
            $scope.$apply();  
        });
    };
}

HTML

这不起作用

<div class="form-group col s12" >
   <select ng-options="t.tipo for t in tipos track by t.tipo" ng-model="nuevo_muestra.tipo">
   </select>
   <label>el tipo es: {{nuevo_muestra.tipo}}</label>
</div>

这个

<div class="form-group input-field col s12" >
   <select ng-model="nuevo_muestra.tipo">
      <option ng-repeat="t in tipos" value="{{t.tipo}}"> {{t.tipo}}
      </option>
   </select>
</div>

但是如果我使用输入,那么它会工作,为什么,为什么? :(

<div class="form-group">
   <input type="text" class="form-control" name="tipo" ng-model="nuevo_muestra.tipo">
</div>

1 个答案:

答案 0 :(得分:0)

必须是

<select ng-options="t.tipo for t in tipos" ng-model="nuevo_muestra">
</select>

那将用所选的tipos元素替换nuevo_muestra。

<select ng-options="t.tipo as t.tipo for t in tipos" ng-model="nuevo_muestra.tipo">
</select>

这将设置nuevo_muestra.tipo与所选元素的tipo。

the documentation中详细描述了这一点。

此外,success()已被弃用了很长时间,$scope.$apply()在这里完全没用。