2017-10-03 2 views
1

의 값을 업데이트 나는 다음과 같은 코드가 있습니다자바 스크립트 : 객체 필드

var view = function() { 

var formset_prefix = '', form_id = ''; 

var DOMStrings = { 
    formset_total: 'TOTAL_FORMS', 
    formset: '*[id$=-TOTAL_FORMS]', 
    field: '*[id^=id_' + formset_prefix + '-]', 
    field_idx = '*[id^=id_' + formset_prefix + form_id +'-]' 

}; 

return { 
.................... 
get_form_fields: function (prefix, id) { 
      formset_prefix = prefix; 
      form_id = id; 
      console.log(formset_prefix); 
      console.log(DOMStrings.field); 
      return document.querySelectorAll(DOMStrings.field); 
     } 
..... }(); 

나는 formset_prefixformset_id 무엇 시작 부분에 모르겠어요,하지만 난 그 이후 여러 함수 호출을 사용하여 얻을, 그래서 처음에는 빈으로 초기화합니다. 나는 formset_prefixformset_id values를 업데이트 할 때

괭이는 내가 DOMStrings 개체의 업데이트가 나중에 fieldformset 속성 강제 할 수 있습니까? 인수로 필요한 매개 변수를 더 좋은

var formset_prefix = '', form_id = ''; 

var DOMStrings = function() { 
    return { 
     formset_total: 'TOTAL_FORMS', 
     formset: '*[id$=-TOTAL_FORMS]', 
     field: '*[id^=id_' + formset_prefix + '-]' 
    } 
} 

return { 
.................... 
get_form_fields: function (prefix, id) { 
      formset_prefix = prefix; 
      form_id = id; 
      return document.querySelectorAll(DOMStrings().field); 
     } 
..... }(); 

, 문맥을 분리하고, 통과 :

+0

만들기'

var view = function() { var formset_prefix = '', form_id = ''; var DOMStrings = { formset_total: 'TOTAL_FORMS', formset: '*[id$=-TOTAL_FORMS]', field: '*[id^=id_' + formset_prefix + '-]' }; return { /* .................... */ get_form_fields: function(prefix, id) { console.log('formset_prefix = ' + formset_prefix); console.log('DOMStrings.field = ' + DOMStrings.field); return document.querySelectorAll(DOMStrings.field); }, /* Setter for formset_prefix */ set_formset_prefix: function(prefix) { formset_prefix = prefix; DOMStrings.field = '*[id^=id_' + formset_prefix + '-]'; return this; }, /* Setter for form_id */ set_form_id: function(id) { form_id = id; return this; } /*.....*/ } }(); /* Note: when you return "this" you can chain the method calls and now you can do someting like the following */ var fields = view.set_formset_prefix('my-prefix') .set_form_id('my-form-id') .get_form_fields('my-prefix', 'my-form-id');
는 기능을 DOMStrings'하고 즉석에서 객체를 계산한다. – georg

+0

그래서 개체가 함수의 반환 될? DOMString 필드 속성을 여러 번 변경해야합니다. 예를 들어 줄 수 있습니까? 그는 여러 값이 단순하거나 계산 된 것을 고려합니다. – user3541631

+0

아래 예제를 추가했습니다. – georg

답변

2

하나의 옵션은 DOMStrings 기능을하고 즉석에서 객체를 계산하는 것이다

var DOMStrings = function(prefix, id) { 
    return { 
     formset_total: 'TOTAL_FORMS', 
     formset: '*[id$=-TOTAL_FORMS]', 
     field: '*[id^=id_' + prefix + '-]' 
    } 
} 

return { 
.................... 
get_form_fields: function (prefix, id) { 
      var strings = DOMStrings(prefix, id); 
      return document.querySelectorAll(strings.field); 
     } 
..... }(); 
1

이를 수행하는 방법은 여러 가지가 있습니다.

당신이 view 정의하는 방법 - formset_prefix, form_idDOMStringsview에 대한 개인 있습니다. 옵션은 formset_prefix 및 의 값을 설정하는 함수를 작성하여 DOMStrings을 갱신 할 수 있습니다. 예를 들어 :