错误:不可分配的模型表达式:undefined(指令:childOne)

Bye*_*Bye 14 angularjs

作为后续仍然关于这个plunker:

plunker

如果我在选择Child 1中的项目时在Chrome中查看控制台,则会收到以下错误:

错误:不可分配的模型表达式:undefined(指令:childOne)

我完全感到困惑,因为指令元素是一个元素,而不是一个属性,并在指令本身中指定为这样.

Liv*_* T. 22

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>'
    };
})
Run Code Online (Sandbox Code Playgroud)

问题是您绑定了ngModel,但是child-one元素没有为它提供值.如果我评论那部分似乎工作正常.

似乎当你在范围内有"="绑定时它意味着强制性,在javascript世界中定义时,属性也会从snake-case转换为camelCase

PS:确实错误有点模糊