2014-02-23 4 views
0

저는 앱에서 작업 중이며 다른 곳에서와 마찬가지로 ng-model을 통해 문자열을 전달하려고합니다. 그러나 이것은 항상 "정의되지 않은"값을 반환합니다.각도 모델이 전달되지 않습니다.

HTML : 사용

<aside> 
    <p>List of objs:</p> 
    <ul> 
     <li class="objList" ng-repeat="obj in objs"> 
      <a href="" class="roomLink" ng-click="hideBool2 = true">{{ obj.topic }}</a> 
      <div class="appear" ng-show="hideBool2"> 
       <a href="" class="exit" ng-click="hideBool2 = false">X</a> 
       <input class="uName" ng-model="passWo" placeholder="Password"> 
       <button class="btn btn-default" ng-click="connectTo(obj.info)">OK</button> 
       <p ng-bind="message"></p> 
      </div> 
     </li> 
    </ul> 
</aside> 

컨트롤러 기능 :

$scope.connectTo = function(rName) { 
     alert($scope.rooms[rName].password + " " + $scope.passWo) 
     if($scope.rooms[rName].password != "") { 
      if($scope.rooms[rName].password == $scope.passWo) { 
       socket.emit("joinroom", { room: rName, pass: $scope.passWo }, function(success, errorMessage) {}); 
       $location.path("/room/" + rName); 
      }else{ 
       $scope.message = "Wrong password"; 
      } 
     }else{ 
      alert($scope.rooms[rName].password); 
     } 
    } 

하지만 $scope.passWo 항상 정의되지 않은 반환합니다.

다른 모든 것은 코드에서 작동합니다.

도움을 주시면 감사하겠습니다.

+1

는'이것은했다 this.passWo' – tymeJV

답변

1

문제는 ng-model이 값을 내부 $scope에 할당하고 있다는 것입니다. 따라서 connectTo 함수를 호출하면 컨트롤러 범위에 $scope.connectTo이 있지만 $scope.passWo을 사용하면 ng-repeat이 각 항목의 범위를 생성하므로 값을 찾을 수 없습니다.

(단일 범위의 값을 사용하려는 경우) 이것을 극복하는 가장 쉬운 방법은 컨트롤러 내부 컨테이너 개체 만드는 것입니다 : 당신의 내부보기 다음

$scope.cont = { passWo: '' }; 

을 사용 :

ng-model="cont.passWo"

이 기사는 당신을 도울 수 있습니다 http://jimhoskins.com/2012/12/14/nested-scopes-in-angularjs.html 그것은 중계기 내부의

+0

시도 장난. 도움말과 링크 모두에 감사드립니다. – Mappan

관련 문제