私のangular jsアプリケーションでは、ng-repeat内にディレクティブがあります。ディレクティブには、HTML 部分が読み込まれるテンプレートがあります。そのテンプレート内で、状態を動的に設定する ui-sref Router を宣言しています!
これは動作しません!
私はフィドルを試しました
ディレクティブ ui-sref を使用しなくても問題なく動作します。しかし、ディレクティブのテンプレートで必要です。
私のHTML部分
<div ng-repeat="sp in obj.PEs">
<div draw-pe proc="{{sp.peId}}"></div>
</div>
<div style="border:1px;" ui-view="properties"></div>
私のスクリプト部分
var myApp = angular.module('myApp', ["ui.router"]);
myApp.controller("testCtrl", function($scope) {
$scope.obj = {
"PEs": {
"1": {
"peId": "1",
"peName": "Exp1",
"peDisplayName": "Exp",
"peType": "Exp",
"peCategory": "PE"
},
"2": {
"peId": "2",
"peName": "RN1",
"peDisplayName": "RNull",
"peType": "RN",
"peCategory": "PE"
}
}
}
})
myApp.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('Exp', {
url: '/Exp/:peId',
views: {
"properties": {
template: ".<h3>I am Exp ! </h3>",
controller: function($scope, $stateParams) {
var peId = $stateParams.peId;
alert("Peid-> " + angular.toJson($scope.obj.PEs[peId]));
}
}
}
})
.state('RN', {
url: '/RN/:peId',
views: {
"properties": {
template: "<h3> I am RN ! </h3>",
controller: function($scope, $stateParams) {
var peId = $stateParams.peId;
alert("Peid-> " + angular.toJson($scope.obj.PEs[peId]));
}
}
}
})
});
myApp.directive("drawPe", function() {
return {
restrict: "AE",
template: '<div ui-sref="{{peObj.peType}}( { peId:peObj.peId } )"> <h5>{{peObj.peDisplayName}}</h5></div>',
link: function($scope, element, attrs) {
var procId = $scope.$eval(attrs.proc);
alert(procId);
// alert(angular.toJson(scope.obj.processElements[procId]))
$scope.peObj = $scope.obj.PEs[procId];
}
}
})
出力パーツをクリックすると、ブラウザ コンソールが表示されます。
エラー
エラー: 無効な状態参照 '( { peId:peObj.peId } )'
ディレクティブ テンプレート内で動的状態名を呼び出すベスト プラクティスは何ですか? 以前に尋ねられた質問と回答をいくつか読みましたが、Angular Js を初めて使用するため、その考えが明確ではありません。
任意のアイデア/ヘルプをいただければ幸いです
ありがとう