2013-04-30 14 views

Odpowiedz

22

TL; DR; - Problem polega na tym, że atrybuty są snake-case, a definicja zakresu przekształca je w camelCase.

Cóż masz:

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

Problemem jest to, że wiążą ngModel ale dziecko-jeden element nie stanowią dla niego wartość. Jeśli skomentuję tę część, wydaje się, że działa dobrze.

Wydaje się, że gdy masz „=” powiązań w zakresie oznacza to obowiązkowe, również atrybuty są przekształcane z węża przypadku do camelCase gdy zdefiniowane w javascript świat

PS: To prawdziwy błąd jest trochę niejasne

+1

Dzięki Liviu, naprawdę nie powinienem był używać tego plunkera, ponieważ go nie stworzyłem, więc nie mogłem go edytować. Zmieniłem plunkera, abym mógł pokazać korektę. – Bye

+0

Dziękuję człowiekowi za uwagę na temat transformacji camelCase. w moim przypadku problemem była nazwa atrybutu z podkreśleniem. –

+0

Czy istnieje sposób, aby to naprawić, aby nie można go było przypisać? – ajbraus

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


selectModel="ClutchType.Id" 

powinien być

select-model="ClutchType.Id" 
Powiązane problemy