2014-04-21 3 views
0

나는 lodash 및 vanilla javascript를 사용하여 원하는 기능을 수행합니다. 값을 전달하고 값이 이미 매핑되어 있는지 확인한 다음 값에 특정 하위 속성이 있는지 확인합니다. 이 경우 동일한 함수를 통해 하위 속성을 전달합니다.Ember.js 컨트롤러에서 함수의 결과를 다시 전달합니다.

나는 엠버 애플 리케이션에서 본질적으로 같은 것을하려하지만,이 기능은 컨트롤러의 속성입니다. 함수 이름을 참조하려고하면 "Uncaught ReferenceError : collectHeaders가 함수가 아닙니다."라는 오류가 발생합니다. "collectHeaders (child)"의 결과를 다시 함수에 전달할 수 있습니까? lodash와

function collectHeaders(parent) {  
    var firstChild = parent.children ? parent.children[0] : {}; 

    if (firstChild.section_type && firstChild.section_value) { 
    _.forEach(parent.children, function(child) { 
     collectHeaders(child) 
    }); 
    } else if (parent.children) { 
    // more code 
    } 
} 

Ember.app 컨트롤러 : 그것이 작동하는 곳

그냥 & 자바 스크립트를 lodash

var mapping = {}; 

var CompareController = Ember.ObjectController.extend({ 

collectHeaders: function(parent) { 
    var firstChild = parent.children ? parent.children[0] : {}; 

    if (firstChild.section_type && firstChild.section_value) { 
     _.forEach(parent.children, function(child) { 
     collectHeaders(child); 
     }); 
    } else if (parent.children) { 
     // more code 
    } 
    }, 
}); 

export default CompareController; 
+1

나는 엠버 (ember) 나 로다시 (lodash)에 대해 너무 많이 알지는 못하지만'this.collectHeaders (child); – 13ruce1337

+0

그래, 나는 그것을 시도하고 오류를 반환합니다 : 정의되지 않은 'collectHeaders'속성을 읽을 수 없습니다. – dagarre

답변

0

귀하의 코드는 이전의 기능은 글로벌 있었다, 범위를 벗어

collectHeaders: function(parent) { 
    var self = this; 
    var firstChild = parent.children ? parent.children[0] : {}; 

    if (firstChild.section_type && firstChild.section_value) { 
     _.forEach(parent.children, function(child) { 
     self.collectHeaders(child); 
     }); 
    } else if (parent.children) { 
     // more code 
    } 
    }, 
}); 
관련 문제