Ошибка: неприемлемое выражение модели: undefined (директива: childOne) - программирование
Подтвердить что ты не робот

Ошибка: неприемлемое выражение модели: undefined (директива: childOne)

В качестве продолжения по-прежнему относится к этому плункеру:

plunker

Если я просмотрю консоль в Chrome при выборе элемента в Child 1, я получаю следующую ошибку:

Ошибка: неприемлемое выражение модели: undefined (директива: childOne)

Я полностью озадачен, поскольку директивным элементом является элемент, а не атрибут и обозначается как таковой в самой директиве.

4b9b3361

Ответ 1

TL; DR;. Проблема заключается в том, что атрибуты змеиный случай, и определение области превращает их в camelCase.

У вас есть:

app.directive('childOne', function () {
    return {
        restrict: "E",
        replace: true,
        scope: {
            labelName: "@",
            selectPhrase: "@",
            ngModel: "=",
            options: "=",
        },
        template: '<span><div class="local-label">{{labelName}}: </div><div style="width:15px;display:inline-block;"></div>' +
                  '<span style="display: inline-block;"><select ng-model="ngModel" ng-options="o.Id as o.Name for o in options | orderBy:\'Name\'" class="formRequire" required><option value="" selected="selected">{{selectPhrase}} ...</option></select>' +
                  '</span></div></span>'
    };
})

Проблема заключается в том, что вы связываете ngModel, но элемент child-one не предоставляет значения для него. Если я прокомментирую эту часть, она, похоже, работает нормально.

Похоже, что когда у вас есть привязки "=" , это означает обязательный, также атрибуты преобразуются из змеиного футляра в camelCase когда определено в javascript мире

PS: Это правда, что ошибка немного расплывчата.

Ответ 2

<child-one 
      label-name="Child 1" select-phrase="Please Select Clutch Type" 
      selectModel="ClutchType.Id" options="clutchTypes" >
</child-one> 


selectModel="ClutchType.Id" 

должен был

select-model="ClutchType.Id"