2016-11-12 7 views
0

У меня есть следующая функция, которая принимает переменное описание в качестве параметраПередача значения в функции должным образом в AngularJS

$scope.relsingle = function(description) { 
    console.log(description); 
    var url = $scope.url+'/api/descrelation?limit=4&description='+description; 
    $http.get(url).success(function(data) { 
     console.log(data); 
     $scope.apgresponse = data; 
    }) 
}; 

Я использую следующий подход передать это значение в HTML-страницу

ng-init="relsingle(prodres[0].description)" 

Это значение of prodres [0]. Console output

И значение prodres приходит отсюда

$scope.prodat = function(id) { 

    var uri = $scope.url+'/api/getproduct?productid='+id; 
    console.log(uri); 
    $http.get(uri).success(function(data) { 
     console.log(id); 
     console.log(data); 
     $scope.prodres = data; 
    }) 
    }; 

, когда я вхожу значение описания в консоли в relsingle функции.

console.log (описание);

Это дает мне значение undefined.

+0

I Думаю, ng-init был создан для обработки выражения, но не уверен, что он хорошо работает с текущей функцией. – GillesC

+0

Что такое 'prodres'? – dfsq

+0

relsingle - пользовательская функция, которую я определил –

ответ

1

Вы не можете сделать это так: ngInit, потому что он работает только один раз и когда переменная этого события prodres пока недоступна, так как она исходит из асинхронного вызова.

Что вы можете сделать, однако, чтобы сделать ngInit выполнять только после того, как значение для prodres было решено:

<div ng-if="prodres" ng-init="relsingle(prodres[0].description)">...</div> 

Поскольку ngIf имеет более высокий приоритет ngInit будет выполняться только после того, как ngIf.

+0

по-прежнему плохой практикой использовать 'ng-init' для этого в первую очередь – charlietfl

+0

Итак, какой подход я должен соблюдать, пожалуйста, объясните подходящий подход с детальностью для подобных проблем. –

+0

@dfsq - Спасибо, что это решило мою проблему. –

0

Ну это потому, что это потому, что массив не был оценен в javascript.Use обратного вызова функции и хранить этот массив в переменном на $ объеме scope.Then вы можете использовать его в функции

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

  • Нет связанных вопросов^_^