Angular.js: DOM์—์„œ ์ƒ์œ„ ngMessages๊ฐ€ ์ œ๊ฑฐ ๋œ ํ›„ ngMessagesInclude๊ฐ€ ์ฒ˜๋ฆฌ๋จ

์— ๋งŒ๋“  2015๋…„ 08์›” 27์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: angular/angular.js

์ œ๋ชฉ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ngMessagesInclude๋Š” ์ƒ์œ„ ngMessages๊ฐ€ DOM์—์„œ ์ œ๊ฑฐ ๋œ ํ›„ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. angular๊ฐ€ ๋‚ด๋ถ€ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ๋ถ€๋ชจ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ngMessage ๊ฐ€ ngMessages ์š”์†Œ ๋‚ด๋ถ€์— ์ธ๋ผ์ธ๋˜๊ฑฐ๋‚˜ ์ƒ์œ„ ์š”์†Œ๊ฐ€ DOM์— ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

<div ng-if="myForm.$submitted" ng-messages="myForm.myName.$error">
  <div ng-messages-include="messages.html"></div>
</div>

์ œ์ถœ์€ ๋‹ค์Œ์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

this.change = function(myForm) {
  var self = this;
  myForm.$setSubmitted();    // event A
  $scope.$applyAsync(function () {
    self.currentStep = 'step2.html';     // event B
  });
};

์ด๋ฒคํŠธ (A)์—์„œ messages.html ๊ฐ€ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. $templateRequest ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ๋ฐ˜ํ™˜ ๋  ๋•Œ๊นŒ์ง€ ์—ฐ๊ฒฐ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ํ•œํŽธ, ์ด๋ฒคํŠธ (B)๋Š” ngMessages ๋ฐ ๊ทธ ํ•˜์œ„ ํ•ญ๋ชฉ์„ DOM์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ngMessagesInclude ์ฝ˜ํ…์ธ ๊ฐ€ ๋„์ฐฉํ•˜๊ณ  angular๊ฐ€์ด๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜์ด ์‹œ์ ์—์„œ ๋” ์ด์ƒ ngMessages ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฒ€์ƒ‰ ํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

Plnkr : http://plnkr.co/edit/0GOOLERvfj7n9vDVEyZp?p=preview

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ngIf ์กฐ๊ฑด๊ณผ ํ•จ๊ป˜ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ 1.4.4์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

ng-if="myForm.$submitted && myForm.myName.$invalid" 

๊ตฌ์„ฑ ์š”์†Œ ์ธก๋ฉด์—์„œ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด require: '^^ngMessages' ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์—ฐ๊ฒฐ ์ค‘์— ํ•ด๋‹น ์กฐ๊ฑด์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ngMessages low confusing bug

๋ชจ๋“  3 ๋Œ“๊ธ€

์‰ฌ์šด ์ˆ˜์ •์€ ngMessagesInclude์—์„œ HTML์„ ์ปดํŒŒ์ผ / ๋งํฌํ•˜๊ธฐ ์ „์— ๋ฒ”์œ„๊ฐ€ ํŒŒ๊ดด๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

$templateRequest(src).then(function(html) {
    if (scope.$$destroyed) return;
    // ...
}

์ด๊ฒƒ์ด ngInclude๊ฐ€ ๋™์ผํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

ngInclude ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋“ค๋ฆฌ๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
@awerlang ๋˜๋Š” @jpekkala , PR ์ œ์ถœ์— ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ญ๋‹ˆ๊นŒ?

ํ™•์‹คํ•œ. ๋ฉฐ์น  ๋‚ด๋กœ PR์„ ์ œ์ถœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰