2013-04-30 38 views
14

作爲後續仍對此plunker:錯誤:不分配模型表達:未定義(指令:childOne)

plunker

如果我回顧在Chrome控制檯中選擇時在兒童中的項目1,我得到以下錯誤:

錯誤:不分配模型表達:未定義(指令:childOne)

我完全困惑,因爲指令元素是一個元素,而不是一個屬性,並在指令本身中被指定爲這樣。

回答

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>' 
    }; 
}) 

的問題是,您綁定ngModel但孩子 - 一個元素它並沒有提供一個值。如果我評論那部分它似乎工作正常。

看來,當你有「=」在範圍綁定這意味着強制,屬性也從蛇的情況下轉化駝峯在JavaScript世界

PS定義時:這是真正的錯誤是有點含糊

+1

謝謝Liviu,我真的不應該使用那個笨蛋,因爲我沒有創建它,所以我不能編輯它。我改變了重拳,所以我可以顯示更正。 – Bye 2013-04-30 16:03:33

+0

謝謝關於camelCase轉換的通知。在我的情況下,與下劃線屬性的名稱是問題。 – 2013-09-10 10:39:45

+0

有沒有辦法解決這個問題,所以它不是不可分配的? – ajbraus 2014-12-08 02:44:26

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"