2014-09-16 3 views
1

я узнавал Угловое и нашел это при попытке доступа родительского контроллер http://jsfiddle.net/eqb23s8t/доступа родительский контроллер с нг-повторить

Я Ожидал получить доступ к одной переменной из родительского контроллера внутри нг-повтора, используя $ parent, поэтому, когда один из флажков нажат, все нужно обновить, но это неверно. Зачем ?.

<div ng-app ng-controller="ParentCtrl"> 
      <ul> 
       <li ng-repeat="city in cities">{{city}}<input type="checkbox" ng-checked="$parent.somevar" /></li> 
      </ul> 
     </div> 

ответ

4

Во-первых, ваш jsFiddle имеет ChildCtrl определено, но оно не будет иметь никакого эффекта потому что вы никогда не используете его. Вы можете удалить его.

Во-вторых, как описано в документации ngChecked, есть разница между ngChecked и ngModel: https://docs.angularjs.org/api/ng/directive/ngChecked

Если то, что вы ожидаете, чтобы это произошло, это есть все галочки чек/снимите вместе, вы, вероятно, хотите ngModel а не ngChecked.

Это не ясно из вашего вопроса, что вы на самом деле пытаетесь сделать, но вот развилка ваших jsFiddle иллюстрирующего обмена данных через $ родительские переменный:

http://jsfiddle.net/7jzyk7f6/

Он просто делает следующее:

<li ng-repeat="city in cities">{{city}}<input type="checkbox" ng-model="$parent.somevar" /></li> 

для иллюстрации обоих концепций.

1

В этом случае вам нужно использовать ngModel (связывание двухсторонняя) вместо (связывание односторонняя) ngChecked:

ng-model="$parent.somevar" 

See JSFiddle

2

Вы не связать модель для представления, которое может отражать изменения. Текущий код просто считывает модель (в данном случае somevar). Используйте ng-model вместо ng-checked. Угловой будет обрабатывать остальные:

HTML

<div ng-app ng-controller="ParentCtrl"> 
     <ul> 
      <li ng-repeat="city in cities">{{city}}<input type="checkbox" ng-model="$parent.somevar" /></li> 
     </ul> 
    </div> 

JS

function ParentCtrl($scope) { 
    $scope.cities = ["NY", "Amsterdam", "Barcelona"]; 
    $scope.somevar = true; 
} 

http://jsfiddle.net/eqb23s8t/4/

1

Я также полностью новичок в Angular, поэтому я могу ошибаться. Но я вижу мало ... вещей в вашем коде. В первую очередь ChildCtrl не используется вообще. Во-вторых, похоже, что только ng-model директива применила двустороннюю привязку к флажкам. Тем не менее ng-checked только для добавления | удалить checkedатрибут.

И js-fiddle

1

Сэр, пожалуйста, используйте нг-модель для обозначения сферы родителя. вот что я создал демо-версию для вас [демо] [1]

[1]: http://jsfiddle.net/nwg7bwLx/ 
+0

Я дама :) и спасибо вам помочь =) – fer

+0

ой извините мадам! Я из Индии так не знаком с этими именами ... :-) – Sudarshan

Смежные вопросы