1

json ファイルの内容を取り込むコントローラーがあります。

function phoneListController($scope, $http) {
 $http.get('phones.json').success(function(data) {
    $scope.phones = data.offers_basic_data;
    $scope.features = data.equipmentSearchFeatures;
 }).error(function(data, status, headers, config) {
    console.log('error');
 });
}

これはうまく機能しますが、電話スコープ (製品 ID) の項目の 1 つを使用して、2 番目のスコープで正しい機能を取得する必要があります。次のようなものを配置しますか?

var productid = phones.1.productid;

関数内?ページ上?「ng-data-repeat」を使用して電話を一覧表示していますが、変数を繰り返し内に配置できますか? 製品 ID {{phone.1.ProductID}} を機能スコープ {{features.productID.0}} に挿入するさまざまな方法を試しましたが、何もうまくいかないようです。アイデア/提案はありますか?

間違った用語を使用している場合は修正してください。angularJS を使用してから 1 週間も経っていません。


関数内で変数を割り当てようとしましたが、うまくいきませんでした:

var productid = phones[1]['productID'];

そして、HTML内でそれを呼び出す方法は次のとおりです。

Test: {{features.productid.0}}


さて、私は本当に近くにいます。本当にばかげた/小さな何かが欠けていることを知っています:

$scope.phones = data.offers_basic_data;
console.log(JSON.stringify(phones));
var productid = $scope.phones[1]['ProductID'];
$scope.features = data.equipmentSearchFeatures['Features'][productid];

上記は機能しませんが、電話は白いものではなく、ページに再びリストされています。変数を配列に正しく組み込んでいないと感じています。


2 番目の配列のショットを次に示します。

[equipmentSearchFeatures] => Array
    (
        [Features] => Array
            (
                [12312] => Array
                    (
                        [0] => Test - no

次に、代わりに次の行を使用してみました。電話は表示されますが、テスト機能は表示されません。

$scope.features = data.equipmentSearchFeatures['Features'][$scope.phones[1]['ProductID']];
4

3 に答える 3

0

@cfox: これを試してください:

console.log(JSON.stringify(phones));

正しい要素を探しているかどうかを確認してください!

しかし、私はあなたがやりたいと思います

var productid = $scope.phones[1].ProductID;

代わりは!

于 2013-10-29T13:11:13.060 に答える
0

jsonファイルを大幅に再フォーマットし、機能を製品の直下に移動し、別の配列ではなく、再フォーマットすることで解決しました。AngularJSを使用してこれを解決する方法があったと確信していますが、1週間も経たないうちにその解決策を見つけることができません.

于 2013-10-29T18:11:29.303 に答える
0

編集に基づいて、プロパティ名が ProductID であると仮定します。

var productid = $scope.phones[1].ProductID;

編集

わかりdata.equipmentSearchFeaturesました。配列である Features というプロパティがあり、配列のメンバーには productId というプロパティがあります。変数 productId に一致するプロパティを見つけたいですか?

これにはループが必要です。これは構文チェックされていませんが、近いはずです:

var productid = $scope.phones[1].ProductID; //get the product id

//loop over the Features collection until you match the productId
angular.forEach(data.equipmentSearchFeatures.Features, function(feature){
  if (feature.productId == productId){
    //now set the scope variable to the matching item
    $scope.features = feature;
  }
};
于 2013-10-29T12:54:16.673 に答える