'this' 또는 '$scope' 중 어느 쪽을 사용해야 합니까?
기능에 위해 은 두 즉, '컨트롤러 기능'입니다.this
★★★★★★★★★★★★★★★★★」$scope
.
떤떤것 을제 ?용? 용?? ??? 알겠습니다.this
되어 있습니다.또, 「컨트롤러」로 설정되어 있습니다.$scope
는 뷰용 스코프 체인 내의 객체입니다.그러나 새로운 "Controller as Var" 구문을 사용하면 어느 쪽도 쉽게 사용할 수 있습니다.그래서 제가 묻고 싶은 것은 무엇이 최선이고 미래의 방향은 무엇인가 하는 것입니다.
예:
「」를 사용합니다.
this
function UserCtrl() { this.bye = function() { alert('....'); }; }
<body ng-controller='UserCtrl as uCtrl'> <button ng-click='uCtrl.bye()'>bye</button>
「」를 사용합니다.
$scope
function UserCtrl($scope) { $scope.bye = function () { alert('....'); }; }
<body ng-controller='UserCtrl'> <button ng-click='bye()'>bye</button>
는 개인적으로 ★★★★★★★★★★★★★★★★★★★★★★★★★★★this.name
Javascript OO입니다.
조언 좀 해주시겠어요?
둘 다 쓸모가 있다.먼저, 몇 가지 역사...
$controller as는 "controller as"가 훨씬 최신인 반면, $controller as는 이전 버전에서는 불안정한 사전 버전에서는 공식적으로 표시되었습니다.
둘 다 완벽하게 작동하며 유일한 오답은 명확한 이유 없이 동일한 앱에 혼합하는 것입니다.솔직히 말하면 섞는 것은 효과가 있지만 혼란만 가중시킬 뿐이다.그러니 하나를 골라 굴려라.가장 중요한 것은 일관성을 유지하는 것이다.
어느 것이요?그건 당신에게 달렸어요.$scope에는 더 많은 예가 있지만 "Controller as"도 활기를 띠고 있습니다.둘 중 하나가 더 나은가요?그건 논쟁의 여지가 있다.그럼 어떻게 고르세요?
편안함.
$scope를 숨기고 중간 개체를 통해 컨트롤러에서 뷰에 멤버를 노출하는 것을 좋아하기 때문에 "Controller as"를 선호합니다.이 .*를 설정하면 컨트롤러에서 뷰에 표시할 내용만 표시할 수 있습니다.$scope에서도 가능합니다만, 저는 표준 JavaScript를 사용하는 것을 선호합니다.사실, 저는 이렇게 코드화합니다.
var vm = this;
vm.title = 'some title';
vm.saveData = function(){ ... } ;
return vm;
이것은 나에게 더 깨끗한 느낌이고 무엇이 보이는지 쉽게 볼 수 있게 해준다.view model을 나타내는 "vm"을 반환하는 변수의 이름을 지정합니다.그게 제 관습일 뿐이에요.
$scope로 동일한 작업을 수행할 수 있으므로 기술을 추가하거나 손상시키지 않습니다.
$scope.title = 'some title';
$scope.saveData = function() { ... };
그러니 그건 너에게 달렸어.
주입
$scope에서는 $scope를 컨트롤러에 삽입해야 합니다.다른 이유($broadcast나 시계 등)가 없는 한 컨트롤러에서는 이 작업을 수행할 필요가 없습니다.
업데이트 이 투고는 2가지 선택지에 대해 작성했습니다.http://www.johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/
$scope
각도 2.0 서 angular angular angular angular angular angular angular angular angular angular angular angular 。이렇게 '마지막으로this
Angular 2.0의 출시일이 가까워지면 다른 사람들이 따르고 싶어 하는 접근법이 될 것입니다.
javascript의 'this'는 그것만으로는 충분한 문제가 있으며, 다른 의미나 용도를 추가하는 것은 좋은 생각이 아니라고 생각합니다.
확실히 하기 위해서라면 $scope를 쓰겠어요.
갱신하다
여기서 설명하는 'controller as' 구문이 있습니다.팬은 아니지만 이제 좀 더 '공식적인' 앵글이 되었으니JS 구축은 주목할 필요가 있습니다.
다음 Todd Mooto에서 설명한 바와 같이 Controller A가 스코프를 쉽게 중첩할 수 있으므로 더 좋다고 생각합니다.
http://toddmotto.com/digging-into-angulars-controller-as-syntax/
또한 바인딩 표현에 적어도1개 이상의 .가 포함되어 있기 때문에 "Don bind to bind to primitive requendation"을 따라야 합니다.
또, 2.0으로 종료하는 범위로부터 분리할 수 있습니다.
Angular 에는 Angular를 사용할 때 Angular를 사용하는 .this
를 권장합니다.만 아니라, 가가, 가가라는 사실도 $scope
하지 않는 가 된다.$scope
.
2..jason328의 "$scope is removed in Angular 2.0"은 "$scope is removed in Angular 2.0"입니다. 내가 하는 데 을 줄 또. 그것은 바로 '다'이다.this
가독성이 향상되었습니다.fooCtrl.bar
HTML의 알 수 있습니다.bar
.
「」로 한 지 안 : 「」로 전환.this
방법이 요.$scope
이 적은
콤비네이션이 더 좋아요.
$scope의 단순한 console.log와 그것들을 몇 가지 모의 데이터로 채운 후 "this"를 보면 알 수 있습니다.
$120을 사용하면 컨트롤러의 커버 아래 부분에 접근할 수 있습니다.다음은 예를 제시하겠습니다.
$$ChildScope: null;
$$childHead: null;
$$childTail: null;
$$listenerCount: Object;
$$listeners: Object;
$$nextSibling: Scope;
$$prevSibling: null;
$$watchers: null;
$$watcherCount: 0;
$id: 2;
$parent: Object;
foo: 'bar';
** $의 속성이나 메서드는 Angular 팀이 만지는 것은 권장하지 않지만 $parent와 $id로 멋진 일을 할 수 있는 안전한 게임입니다.
'this'는 2-way 바인딩된 데이터와 함수를 첨부하여 바로 요점으로 이동합니다.첨부한 내용만 표시됩니다.
foo: 'bar';
그럼 왜 조합이 더 좋은 걸까요?
UI 라우터 네스트된 앱에서는 메인 컨트롤러에 액세스하여 자 컨트롤러 내에서 범용값과 함수를 설정하고 호출할 수 있습니다.
메인 컨트롤러:
// Main Controller
var mainCtrl = this;
mainCtrl.foo = 'Parent at the bar';
하위 컨트롤러:
// Child Controller
var mainCtrl = $scope.$parent.mainCtrl;
var childCtrl = this;
// update the parent from within the child
childCtrl.underageDrinking = function(){
mainCtrl.foo = 'Child at the bar';
}
// And then attach the child back to a property on the parent controller!
mainCtrl.currentCtrl = childCtrl;
이제 자녀 내에서 부모에 액세스할 수 있고 부모에서 자녀에 액세스할 수 있습니다.
둘 다 가능하지만 범위에 맞는 것을 $scope에 적용하고 컨트롤러에 적합한 것을 컨트롤러에 적용하면 코드를 쉽게 유지 관리할 수 있습니다."어, 스코프를 사용하여 이 컨트롤러를 구문으로 잊으십시오."라고 말하는 사람에게...똑같이 동작할 수도 있지만, 어떻게 하면 큰 어플리케이션을 잘 관리할 수 있을지 궁금하네요.
언급URL : https://stackoverflow.com/questions/16619740/should-i-use-this-or-scope
'programing' 카테고리의 다른 글
Angular returns 모듈의 테스트 서비스가 정의되지 않았습니다. (0) | 2023.03.22 |
---|---|
IDEA Intellij의 스프링 부트로 자동 새로고침하는 방법 (0) | 2023.03.22 |
오버플로우 정렬 단계 버퍼링된 데이터 사용량이 내부 제한을 초과합니다. (0) | 2023.03.22 |
AngularJS는 객체 배열의 데이터 변경 감시 (0) | 2023.03.17 |
JavaScript:객체에서 읽기 쉬운 포맷된 JSON을 직접 생성하려면 어떻게 해야 합니까? (0) | 2023.03.17 |