作为关于此羽毛球的后续行动:
如果我在儿童1中选择项目时在Chrome中查看控制台,则会收到以下错误:
错误:不可分配的模型表达式:undefined(指令:childOne)
我完全感到困惑,因为指令元素是一个元素,而不是一个属性,并在指令本身中指定为。
答案 0 :(得分:22)
TL; DR; - 问题是属性是 snake-case ,范围定义会将它们转换为 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元素没有为它提供值。如果我评论那部分它似乎工作正常。
似乎当你在范围内有“=”绑定时它意味着强制性,属性也会从 snake-case 转换为 camelCase 在javascript世界中定义时
PS:错误有点模糊
答案 1 :(得分:3)
<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"