2016-11-12 34 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)" 

該值通過這個值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(description);

這給了我未定義的值。

+0

我用它認爲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你可以在功能