2015-07-25 6 views
0

Я пытаюсь выбрать правильный шаблон при нажатии переключателя, но значение ng-model не распространяется на $ scope. вот мой контроллер:

eventsApp.controller('FirstTestController', 
function FirstTestController($scope, $filter) { 
    $scope.menu = ['List', 'Table']; 
    //$scope.checkedMenuItem = null; 
    $scope.data = [ 
     { action: "Get groceries", complete: false }, 
     { action: "Call plumber", complete: false }, 
     { action: "Buy running shoes", complete: true }, 
     { action: "Buy flowers", complete: false }, 
     { action: "Call family", complete: false }]; 
    $scope.chooseTemp = function() { 
     if ($scope.checkedMenuItem == 'Table') { 
      return 'templates/testTemp.html'; 
     }else { 
      return 'templates/listTemp.html'; 
     } 

    }; 

}); 

вот мой HTML:

<form name="myForm" ng-controller="FirstTestController"> 
    <div ng-repeat="menuItem in menu"> 
       <label> 
        <input type="radio" name="group" ng-model="checkedMenuItem" value="{{menuItem}}" /> 
        {{menuItem}}{{checkedMenuItem}} </label> 
      </div> 
    <ng-include src="chooseTemp()"></ng-include> 
    </form> 

значение $ scope.checkedMenuItem всегда не определено. Спасибо. Michael

+0

потому что вам нужно использовать объекты в 'ng-model' не примитивах. 'ng-repeat' создает дочернюю область – charlietfl

+0

Ваш комментарий помог мне: я искал, как получить доступ к родительской области из области содержимого, и это сработало. Должен быть ng-model = "$ parent.checkedMenuItem" Спасибо – user1272913

+0

no ... никогда не должен использовать '$ parent' ... должен определять объект в области контроллера и использовать его вместо этого. Может быть пустым объектом, а 'ng-model' добавит свойства и значения ... один объект в форме – charlietfl

ответ

0

Поскольку ng-repeat создает дочернюю область, необходимо использовать $ parent в ng-model для доступа к родительской области. Спасибо charlietfl, чей комментарий помог мне решить эту проблему.

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