2013-11-04 4 views
0

AngularJS 컨트롤러에서 $ scope 속성에 대한 사용자 지정 개체를 사용하는 것이 더 나은 방법이라고 생각하십니까?AngularJS 컨트롤러 - 범위 속성 대 객체?

컨트롤러의 $scopeplateCheck 속성을 첨부하는 것이 더 낫습니까?

개체 버전

app.controller('PlateCheckCtrl', ['$scope', 'PlateCheckService', function ($scope, PlateCheckService) { 
    var plateCheck = { 
     plateNumber: '', 
     message: '', 
     alertClass: '', 
     checkPlate: function (plateNumber) { 
      var _this = this; 

      PlateCheckService.checkPlate(plateNumber).then(function (response) { 
       _this.message = response.message; 
       _this.alertClass = response.alertClass; 
      }); 
     } 
    }; 

    $scope.plateCheck = plateCheck; 
}]); 

$ 범위 버전

app.controller('PlateCheckCtrl', ['$scope', 'PlateCheckService', function ($scope, PlateCheckService) { 
    $scope.plateNumber = ''; 
    $scope.message = ''; 
    $scope.alertClass = ''; 
    $scope.checkPlate: function (plateNumber) { 
     PlateCheckService.checkPlate(plateNumber).then(function (response) { 
      $scope.message = response.message; 
      $scope.alertClass = response.alertClass; 
     }); 
    }; 
}]); 

은 내가 당신이 .로 $ 범위 개체/속성을 참조하지 않은 경우가 있다고 선가 생각했다 잘못하고있다.

<input type="text" data-ng-model="object.property" /> <-- Right Way 
<input type="text" data-ng-model="property" /> <-- Wrong Way 

답변

3

개체 버전이 좋습니다.

프로토 타입 상속에 관한 angularjs wiki.

프리미티브가있는이 문제는 "항상있는"의 "모범 사례"를 따르면 쉽게 피할 수 있습니다. 네 - 모델에서 - 3 분 가치가 시계. Misko는 ng-switch와의?> 기본 바인딩 문제를 설명합니다.

'.' 모델에서 프로토 타입 상속이 작동하는지 확인합니다. 따라서 대신 을 사용하십시오. 자식 범위

사용 $ parent.parentScopeProperty : 당신이 정말 원시적를 사용/필요합니다

는 두 가지 해결 방법이 있습니다. 이렇게하면 자식 범위가 자체 속성을 만들지 못하게됩니다. 부모 범위에 함수를 정의하고 자식에서 호출하여 부모에게 기본 값을 전달합니다 (항상 가능하지는 않음)

관련 문제