在AngularJS中正确传递函数值

时间:2016-11-12 13:34:25

标签: javascript angularjs angularjs-scope angularjs-ng-init

我有以下函数,它将变量描述作为参数

$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)"

这个prodres [0] .description的值来自这里。 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(介绍);

这给了我未定义的值。

2 个答案:

答案 0 :(得分:1)

你不能使用ngInit这样做,因为它只运行一次,当它发生时变量prodres尚未可用,因为它来自异步调用。

您可以做的是只有在ngInit的值得到解决后才能执行prodres

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

因为ngIf具有更高的优先级,ngInit将仅在ngIf之后执行。

答案 1 :(得分:0)

这是因为它是因为数组尚未在javascript中进行评估。使用回调函数并将该数组存储在$ scope范围内的变量中。然后可以在函数中使用它

相关问题