2016-05-09 3 views
1

fiddleнг-модель не определена от контроллера

Hi,

Почему значение из 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); 
} 

Спасибо.

ответ

0

Как вы используете ng-repeat, вы будете иметь много машин, так что ваша модель вы заполняться в автомобилях:

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

Так просто? Это без проблем. Я идиот: D – user3700786

0

Вы должны использовать car.brand as или car.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 получит

Смежные вопросы