0
基本的に私はUrlを文字列として渡すカスタムディレクティブを作成しました。このディレクティブ内にコンテンツを作成するhttp.get()
メソッドを呼び出しています。私が望むのは、新しいURLが別のJSON
オブジェクトを返すため、annotation-url
属性の値を変更することができます。しかし、私はコントローラからannotationData
を変更すると、ディレクティブがリフレッシュされないようです。ディレクティブの内容を変更する必要があるカスタムディレクティブの属性値を動的に変更します。
HTML
<span ng-click="annotatonData = 'data/annotations1.json'">John</span>
<span ng-click="annotatonData = 'data/annotations2.json'">Marry</span>
<ng-annotate user-options="user" annotation-url="{{annotatonData}}"></ng-annotate>
コントローラー:
app.controller('ngAnnotationsController', ['$scope', '$http', function ($scope, $http) {
//InIt default http get
$scope.annotatonData = 'data/annotations1.json';
}]);
指令:
app.directive('ngAnnotate', function() {
return {
templateUrl: 'templates/...',
restrict: 'E',
scope: {
annotationUrl: "@"
},
controller: ['$scope', '$http', function ($scope, $http) {
$http.get($scope.annotationUrl).then(function (response) {
$scope.data = response.data;
...
...
私はそれを "="に変更すると、オブジェクトではなく文字列を渡し、渡されたオブジェクトでHTTPのgetとplayを削除する必要があります。今のところ、私は文字列のURLを表す文字列で遊びたいです。 –
'='に変更するとテンプレートに 'annotation-url =" annotatonData "を変更する必要があり、それでも –
ディレクティブの中で' $ scope.annotationUrl'にアクセスできます基本的に私はInIt関数内のすべてをラップし、新しい値を渡して時計内で呼び出す –