2014-09-18 3 views
0

Я не уверен, почему возврат не передается шаблону компонента. Это прослушивание, и ценность найдена, но не работает.Пользовательский автокомпонентный компонент Ember Cli не работает

return result.resources; не возвращает данные, когда result.resoures имеет массив объектов.

здесь шаблон автозаполнения автоматически complete.hbs

<ul> 
     <li class='row input-group-lg'> 
      {{input type="text" value=searchText placeholder="Enter Street Address" class='col-md-6 col-md-offset-3 col-xs-12 street-address'}} 
     </li> 


    </ul> 
    <ul> 
     {{#each searchResults}} 
      <li>{{this.name}}</li> 
     {{/each}} 
    </ul> 

здесь автоматически complete.js

import Ember from 'ember'; 

export default Ember.Component.extend({ 
     searchText: null, 

     searchResults: function() { 
      var searchText = this.get('searchText'); 
      if(!searchText) { 
       return; 
      } 
      Ember.$.ajax({ 
       url: "http://dev.virtualearth.net/REST/v1/Locations", 
       dataType: "jsonp", 
       data: { 
        key: "", 
        q: searchText 
       }, 
       jsonp: "jsonp" 
      }).then(function(data) { 
       var result = data.resourceSets[0]; 
       if (result) { 
        if (result.estimatedTotal > 0) { 
         return result.resources; 
        } 
       } 
      }); 
     }.property('searchText') 
}); 

ответ

1

Блочный код

.then(function(data) { 
      var result = data.resourceSets[0]; 
      if (result) { 
       if (result.estimatedTotal > 0) { 
        return result.resources; 
       } 
      } 

вернется из promise и не будет возвращать значение для вычисленного свойства, что, очевидно, означает, что вы не возвращать ничего для CP.

Возможная работа вокруг может быть

searchResults: function() { 
     var searchText = this.get('searchText'); 
     var searchResults = Ember.ArrayProxy.create(); 
     if(!searchText) { 
      return; 
     } 
     Ember.$.ajax({ 
      url: "http://dev.virtualearth.net/REST/v1/Locations", 
      dataType: "jsonp", 
      data: { 
       key: "", 
       q: searchText 
      }, 
      jsonp: "jsonp" 
     }).then(function(data) { 
      var result = data.resourceSets[0]; 
      if (result) { 
       if (result.estimatedTotal > 0) { 
        searchResults.set('content',result.resources); 
       } 
      } 
     }); 
     return searchResults; 
    }.property('searchText') 

Вы можете создать arrayproxy и вернуть arrayproxy для CP. По завершении обещания установите результат как содержимое массива, который обновит шаблон.

Смежные вопросы