2017-01-10 3 views
0

Я пытаюсь использовать угловую директиву, он отлично работает, если я ставлю его нормально JS файл, но если я пытаюсь поставить его в функцию он не работает:angularjs - директива не работает функция

function getCity(city){ 
    document.getElementById("weather").innerHTML=city; 
    $.get('https://query.yahooapis.com/v1/public/yql?q=select * from weather.forecast where woeid in (select woeid from geo.places(1) where text="' + city + '")&format=json', function (data) { 
     humi = data.query.results.channel.atmosphere.humidity; 
    }); 
    var app = angular.module("weatApp", []); 
    app.directive("humiGet", function() { 
    return { 
     template : [humi] 
    }; 
    }); 
} 
+0

является GE Где угодно? – Deep

+0

Вы, должно быть, забыли позвонить в getCity(). Пожалуйста, проверьте. – superUser

+0

Он называется и document.getElementById («погода»). InnerHTML = city; работает так, как он называется, но директива doesnt – Vanagasa

ответ

0

Хуми не может быть установлено время вы вызовите директиву:

function getCity(city){ 
    document.getElementById("weather").innerHTML=city; 
    $.get('https://query.yahooapis.com/v1/public/yql?q=select * from weather.forecast where woeid in (select woeid from geo.places(1) where text="' + city + '")&format=json', function (data) { 
     humi = data.query.results.channel.atmosphere.humidity; 

     var app = angular.module("weatApp", []); 
     app.directive("humiGet", function() { 
      return { template : [humi] }; 
     }); 
    }); 
} 

лучше всего было бы использовать Promises:

function getCity(city){ 
    document.getElementById("weather").innerHTML=city; 
    var deferred = $.Deferred(); 
    $.get('https://query.yahooapis.com/v1/public/yql?q=select * from weather.forecast where woeid in (select woeid from geo.places(1) where text="' + city + '")&format=json', function (data) { 
     humi = data.query.results.channel.atmosphere.humidity; 
     var app = angular.module("weatApp", []); 
     app.directive("humiGet", function() { 
      return { template : [humi] }; 
     }); 
     deferred.resolve(true); 
    }); 

    return deferred.promise(); 
} 

// else where 
getCity('Fargo').then(function() { 
    // use directive here 
}); 
+0

Это не может быть так, потому что, если я изменю return {template: "whatever"}, он все равно ничего не возвращает в этой функции – Vanagasa

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