在 AngularJS 中正确传递函数值

Passing value in function properly in 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)"

prodres[0].description的这个值来自这里。

而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(description);

这给了我未定义的价值。

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

然而,您可以做的是让 ngInit 仅在 prodres 的值被解析后执行:

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

因为ngIf有更高的优先级,ngInit只会在ngIf之后执行。

嗯,这是因为数组尚未在 javascript.Use 回调函数中求值,并将该数组存储在 $scope scope.Then 的变量中,您可以在函数