ng-model未在控制器中定义

时间:2016-05-09 20:29:12

标签: javascript angularjs angular-ngmodel ng-controller

fiddle

嗨,

为什么foo()函数的值未定义?

我发现问题是模型名称只是brand但是,这不是我的问题。我的模型名称为car.brand

所以我的问题是 - 如何从ctrl访问模型?

HTML

<div ng-controller="MyCtrl">
  <div ng-if="cars" ng-repeat="car in cars">
    <br>
    <label>{{car.name}}</label>
    <br>
    <label>brand</label>
    <select ng-model="car.brand" ng-options="car as car.name for car in brands" ng-change="loadBrands($index)">
      <option value="">select</option>
    </select>
    <label>model</label>
    <select ng-model="brand.model" ng-options="car as car.model for car in cars[$index].models">
      <option value="">select</option>
    </select>

  </div>
  <button ng-click="foo()">
    save all
  </button>
</div>

JS

$scope.foo = function() {
   alert("foo: " + $scope.car.brand);
 }

感谢。

2 个答案:

答案 0 :(得分:0)

当您使用ng-repeat时,您将拥有许多汽车,因此您可以在汽车中填充您的车型:

$scope.foo = function() {
   for(var i in $scope.cars) {
     alert("foo: " + $scope.cars[i].brand);
   }   
}

答案 1 :(得分:0)

您需要使用car.brand ascar.model as

<div ng-controller="MyCtrl">
  <div ng-if="cars" ng-repeat="car in cars">
    <br>
    <label>{{car.name}}</label>
    <br>
    <label>brand</label>
    <select ng-model="car.brand" ng-options="car.brand as car.name for car in brands" ng-change="loadBrands($index)">
      <option value="">select</option>
    </select>
    <label>model</label>
    <select ng-model="brand.model" ng-options="car.model as car.model for car in cars[$index].models">
      <option value="">select</option>
    </select>

  </div>
  <button ng-click="foo()">
    save all
  </button>
</div>

或做

<div ng-controller="MyCtrl">
  <div ng-if="cars" ng-repeat="car in cars">
    <br>
    <label>{{car.name}}</label>
    <br>
    <label>brand</label>
    <select ng-model="car" ng-options="car as car.name for car in brands" ng-change="loadBrands($index)">
      <option value="">select</option>
    </select>
    <label>model</label>
    <select ng-model="brand" ng-options="car.brand as car.model for car in cars[$index].models">
      <option value="">select</option>
    </select>

  </div>
  <button ng-click="foo()">
    save all
  </button>
</div>

as之前的任何内容都是ng-model将获得的值