我正在尝试使用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>
答案 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()
在这里完全没用。