2016-07-11 5 views
0

내 목표는 간단히 배열 모델에 숫자를 추가하는 것입니다. 이것은 템플릿에서 사용한 반복자로 인해 새로운 HTML 요소를 만들어야합니다.Ember 모델을 업데이트하지 않는 이유는 무엇입니까?

내 동작이 호출되지만 모델이 실제로 업데이트되지 않습니다.

- app 
    - routes 
    - compare.js 
    - templates 
    - compare.hbs 
    - application.hbs 
    - app.js 
    - index.html 
    - router.js 

compare.hbs : 여기

내 디렉토리 구조입니다

<div id="container"> 
    <form method="post" name="login" {{action "submit" on="submit"}}> 
     <p> 
      Member ID 
     </p> 
    <p> {{input id="member-id" type="text"}} <input type="submit" value="Search"></p> 
    </form> 
    <div id="results"> 
     {{#each model as |result|}} 
     <p>{{ result }}</p> 
     {{/each}} 
    </div> 
</div> 

router.js

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

var Router = Ember.Router.extend({ 
    location: config.locationType 
}); 

Router.map(function() { 
    this.route('compare'); 
}); 

export default Router; 

compare.js

import Ember from 'ember'; 

let results = [12, 34, 56]; 

export default Ember.Route.extend({ 
    model: function() { 
    return results; 
    }, 
    actions: { 
    submit: function() { 
     results.push(123); 
     this.get('model').push(123); 
     this.refresh(); 
    } 
    } 
}); 

무엇이 문제입니까?

답변

2

몇 가지 문제가있는 것 같습니다. 결과는 Embers 지식이 아닌 배열에 값을 추가하는 것과 같습니다. 결과는 필요하지 않습니다. 모델에 추가 할 때 pushObject를 사용하면 변경 사항을 알려야합니다. 또한 모델에서 새로 고침을 호출 할 필요가 없습니다.

pushObject에 대한 문서는 당신이 시도하는 것과 매우 유사한 예를 보여줍니다. 그것이 말하는

http://emberjs.com/api/classes/Ember.NativeArray.html#method_pushObject

import Ember from 'ember'; 

let results = [12, 34, 56]; 

export default Ember.Route.extend({ 
    model: function() { 
    return results; 
    }, 
    actions: { 
    submit: function() { 
     this.model().pushObject(123); 
    } 
    } 
}); 
+0

을'썩 (...) pushObject'는가 아니다 기능. – batman

+0

다른 문제는 this.get ('model') 모델을 요청하는 방법입니다.이 함수를 반환하는 것입니다. 나는 작업 버전으로 예제를 편집했다. –

관련 문제