Ember.js: λ„μš°λ―Έμ— μ£Όμž…

에 λ§Œλ“  2015λ…„ 05μ›” 04일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: emberjs/ember.js

λ‚΄κ°€ 이거 κ°€μ§€κ³ μžˆμ–΄:

export function initialize(container, application) {
    application.inject('component', 'store', 'store:main');
    application.inject('component', 'application', 'application:main');
    application.inject('component', 'applicationController', 'controller:application');
    application.inject('helper', 'applicationController', 'controller:application');
    application.inject('model:device', 'application', 'application:main');
    application.inject('model:room', 'application', 'application:main');
    application.inject('model:setting', 'application', 'application:main');
    application.inject('route:application', 'application', 'application:main');
    application.inject('transform', 'application', 'application:main');
}

export default {
  name: 'injections',
  initialize: initialize
};

μ•Œμ•„ 채닀:

application.inject('helper', 'applicationController', 'controller:application');

κ·ΈλŸ¬λ‚˜ λ„μš°λ―Έμ—μ„œ this.get('applicationController') κ°€ μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

import Ember from 'ember';
import environment from '../utils/environment';

export function staticImg(path, options) {
    if (path) {
        var staticRoot = this.get('applicationController').get('model.staticRoot');
        return new Ember.Handlebars.SafeString('<img src="' + environment.staticHost() + staticRoot + path + '" class="' + ( options.hash.classNames || "" ) + '">');
    }
    else {
        return "";
    }
}

export default Ember.Handlebars.makeBoundHelper(staticImg);

λ¬Έμ„œμ—λŠ” λ„μš°λ―Έμ— μ£Όμž…ν•  수 μžˆλ‹€κ³  λ‚˜μ™€ 있으며 이 μ •ν™•ν•œ 섀정은 λ‹€λ₯Έ ν”„λ ˆμž„μ›Œν¬ ν΄λž˜μŠ€μ—μ„œ μž‘λ™ν•˜μ§€λ§Œ μ—¬κΈ°μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€...

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜μ€‘μ— 이 문제λ₯Ό μ ‘ν•˜λŠ” μ‚¬λžŒμ„ μœ„ν•΄ Ember 2.x의 λ„μš°λ―ΈλŠ” 이제 "μ‹€μ œ" 개체이며 μ„œλΉ„μŠ€μ— μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€( Ember.inject.service λ˜λŠ” μ΄ˆκΈ°ν™” 기반 μ£Όμž…μ„ 톡해).

μ˜ˆμ‹œ:

export default Ember.Helper.extend({
  i18n: Ember.inject.service('i18n'),

  compute(params, hash) {
    let i18n = this.get('i18n');
    // stuff here
  }
});

λͺ¨λ“  6 λŒ“κΈ€

λ„μš°λ―Έμ— μ£Όμž…ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λ¬Έμ„œκ°€ μ—…λ°μ΄νŠΈλ˜μ—ˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ λ¬Έμ„œλ₯Ό μˆ˜μ •ν•  수 μžˆλ„λ‘ 이것이 κ°€λŠ₯ν•˜λ‹€κ³  μ–ΈκΈ‰ν•œ 곳을 μ•Œλ €μ£Όμ„Έμš”...

μ•„ μ  μž₯, 1.11용으둜 μ—…λ°μ΄νŠΈν–ˆκ΅°μš”. 감사 ν•΄μš”. 자, κ·Έλ ‡λ‹€λ©΄ λ„μš°λ―Έ λ‚΄μ—μ„œ μ»¨ν…Œμ΄λ„ˆ ν•­λͺ©μ— μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•˜κ³  특히 일반 Ember.Object μΈμŠ€ν„΄μŠ€(μ»¨ν…Œμ΄λ„ˆ 속성이 μ—†μŒ)에 μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•˜λŠ” 경우 κ°€μ•Ό ν•  λ°©ν–₯은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@atomkirk λ„μš°λ―Έμ— 무언가λ₯Ό μ£Όμž…ν•˜λŠ” λŒ€μ‹  컨트둀러/ꡬ성 μš”μ†Œμ— μ£Όμž…ν•˜κ³  μ£Όμž…λœ 개체λ₯Ό λ„μš°λ―Έμ— 전달해야 ν•©λ‹ˆλ‹€(λ˜λŠ” κ³„μ‚°λœ μ†μ„±λ§Œ μ‚¬μš©). λ˜λŠ” λ„μš°λ―Έ λŒ€μ‹  ꡬ성 μš”μ†Œλ₯Ό μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.

ꡬ성 μš”μ†Œ λ‚΄λΆ€μ—μ„œ λ„μš°λ―Έλ₯Ό μ‚¬μš©ν•˜κ³  있고 일반적으둜 κ²½λ‘œμ™€ μ»¨νŠΈλ‘€λŸ¬μ— μ£Όμž…ν•˜λŠ” μ‚¬μš©μž 데이터에도 μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•˜λŠ” 경우 μ–΄λ–»κ²Œ ν•©λ‹ˆκΉŒ? ν•΄λ‹Ή λ„μš°λ―Έ λ‚΄μ—μ„œλŠ” μ•‘μ„ΈμŠ€ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
λͺ¨λ“  ꡬ성 μš”μ†Œμ— μ „λ‹¬ν•˜λŠ” 것이 νš¨μœ¨μ μ΄μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λͺ¨λ“  ꡬ성 μš”μ†Œμ— λŒ€ν•΄ user.name을 λ§Œλ“€μ–΄μ•Ό ν•˜μ§€λ§Œ λͺ¨λ“  ꡬ성 μš”μ†Œμ— λŒ€ν•΄ 동일해야 ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 50개의 ꡬ성 μš”μ†Œκ°€ μžˆλŠ” 경우 ꡬ성 μš”μ†Œ λ‚΄λΆ€μ˜ λ„μš°λ―Έμ—μ„œ μ•‘μ„ΈμŠ€ν•˜λ €λ©΄ λ™μΌν•œ 값을 50개의 ꡬ성 μš”μ†Œμ— 전달해야 ν•©λ‹ˆλ‹€...
이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

이것은 ν΄λ‘œμ € μž‘μ—…μœΌλ‘œ Ember.js 1.13μ—μ„œ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ°Έμ‘°:

λ‚˜μ€‘μ— 이 문제λ₯Ό μ ‘ν•˜λŠ” μ‚¬λžŒμ„ μœ„ν•΄ Ember 2.x의 λ„μš°λ―ΈλŠ” 이제 "μ‹€μ œ" 개체이며 μ„œλΉ„μŠ€μ— μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€( Ember.inject.service λ˜λŠ” μ΄ˆκΈ°ν™” 기반 μ£Όμž…μ„ 톡해).

μ˜ˆμ‹œ:

export default Ember.Helper.extend({
  i18n: Ember.inject.service('i18n'),

  compute(params, hash) {
    let i18n = this.get('i18n');
    // stuff here
  }
});
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰