URLパーツと$statePrams
の一部のパラメータを取得するための角度のコントローラを作成しています。生成された文字列による角型のJSONオブジェクトへのアクセス
$http
サービスを呼び出して、jsonファイルからデータを取得します。データを取り戻した後、特定のオブジェクト要素の内容(指定が$stateParams
から生成されたもの)を、ビューの中で何らかの種類の順序付けられていないリスト要素を生成するために処理できる変数$scope
に割り当てます。
私の問題は、例えばパスをresult['data']['datas']['timeline']
として生成すると、うまく動作せず、ngRepeat:dupe
エラーが発生します。
ただし、重複はありません。 $scope.naviData = result['data']['datas']['timeline'];
のように手動で入力するだけで、オブジェクトが生成され、必要なすべてのデータが表示され、ビューにli
要素が描画されます。
私はこの動的オブジェクト要素アクセスを他の方法で実行する方法がわからないので、この問題をどのように解決できますか。ここで2枚の画像は次のとおり
動的に生成された可変 両方の場合の第1 console.info
がある状態のparamsとIから経路を生成さ第1 。私のために魔法の部分をしているコードもここにあります。
angular.module('MPWeb.datas', [])
.controller('DataDetailsCtrl', function($scope, $state, $stateParams, $http) {
$scope.params = $stateParams;
// set datas for dynamic object handling
var base = 'data.datas';
var category = ($scope.params.categoryId) ? $scope.params.categoryId : '';
var article = ($scope.params.articleId) ? $scope.params.articleId : '';
var stateConfig = (article) ? {
params: {
prefix: base,
categoryId: category,
articleId: article
}
} : {
params: {
prefix: base,
categoryId: category
}
};
console.info(stateConfig.params); // this is the first console entry on the screenshots
// with this function I get back a standard joined string
var objToString = function(obj) {
var tabjson = [];
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
tabjson.push(obj[p]);
}
}
tabjson.push()
return tabjson.join('.');
};
// generate sideNavigation
$http({
method: 'GET',
url: './json/mp-navigation.json'
}).then(function successCallback(result, status, headers) {
var temp = objToString(stateConfig.params);
var naviTemp = (stateConfig.params.articleId) ? temp.replace(/\.[^.]+$/, "") : temp;
naviTemp = "result['" + naviTemp + "']";
naviTemp = naviTemp.replace(/\./g, "']['"); // dynamically generated path with bracket notation method
//$scope.naviData = naviTemp; // if I use this, it gives me the error
$scope.naviData = result['data']['datas']['timeline'];
console.info(naviTemp);
}, function errorCallback(result, status, headers) {
console.warn(status);
});
});
私は私の見解でtrack by $index
を使用した場合も、それはちょうど私の生成されたパスの手紙からli
の要素を生成します。
おかげが、問題は、私は確信して異なります。将来的にこの問題を見つける誰のために、これはコントローラで解決する方法です。また、代わりに私はこれを得るべきである: ''タイムライン ":{ " stormy-beginnings ":" 1969 - 2164 "、 " to-boldly-go ":" 2188-2379 "、 " golden-ages " : "2380 - 2393" } '。 また、私の見解では、naviDataの 'ng-repeat ="(url、name)を使ってURLを使ってトラックを使用することができますが、元の投稿で述べたようにエラーが残っています。 – CreativeZoller