Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AngularJS从ng click上的指令调用函数?_Javascript_Angularjs_Using Directives - Fatal编程技术网

Javascript 如何使用AngularJS从ng click上的指令调用函数?

Javascript 如何使用AngularJS从ng click上的指令调用函数?,javascript,angularjs,using-directives,Javascript,Angularjs,Using Directives,我有一个指令,它从两个单独的$http调用中获取数据,并填充两个不同的ng repeat 为了减少服务器调用,我正在研究仅在ng单击第一个ng重复列表中的某个元素时进行第二次调用 现在,我的指令在默认情况下进行了2次调用,如您所见: var app = angular.module('myApp'); app.directive('release', ['musicInfoService', 'dataService', function(musicInfoService, dataSe

我有一个指令,它从两个单独的$http调用中获取数据,并填充两个不同的ng repeat

为了减少服务器调用,我正在研究仅在ng单击第一个ng重复列表中的某个元素时进行第二次调用

现在,我的指令在默认情况下进行了2次调用,如您所见:

var app = angular.module('myApp');


app.directive('release', ['musicInfoService', 'dataService',
  function(musicInfoService, dataService) {

    return {
      restrict: 'E',
      scope: {
        release: '=',
        artist: '='
      },
      template: '<div class="release">' +
        '<div class="wrapper"><img class="img-responsive" ng-src="{{imageSrc}}"/><div id="text" ng-click="VersionController($scope, dataService)"></div></div>{{release.title | characters:45}}' +
        '</div>',
      replace: false,
      link: function(scope, elem, attr) {
        var defaultImage = 'img/record-default.png';

        scope.imageSrc = defaultImage;
        musicInfoService.getAlbumInfo(scope.artist.name, scope.release.title)
          .success(function(data) {
            if (data.error) return;

            var image = data.album.image[2],
              imageUrl = defaultImage;

            if (image['#text'] !== '') {
              imageUrl = image['#text'];
            }

            scope.imageSrc = imageUrl;
          });

        var defaultFormat = scope.release.format;
        musicInfoService.getReleaseVersions(scope.release.id)
        .success(function(data) {
            if (data.error) return;

            var format = data.versions,
              formats = scope.release.format;

            if (format !== '') {
              formats = format;
            }

            scope.defaultFormat = formats;
                dataService.setItems(scope.release.id.toString(), scope.defaultFormat);
            })
            .error(function($scope) {
                scope.defaultFormat = false;
                dataService.setItems("basic", scope.defaultFormat);
            });
      }
    };
  }
]);

app.factory('dataService', [function($scope){
    var _items= {};
    return { 
          setItems:function(key, value){
             _items[key] = value;
          },
          getItems:function(key){
             return _items[key] ? _items[key] : _items["basic"];
          }
    };
}]);
然后,我可以将第二个调用作为函数放在指令之外,并像ng click=“CallFunctionName”那样调用它吗?我已经试过了,但没用,所以我可能错过了什么。还是比这更复杂


编辑:这里有一个

这需要一个指令吗?另一个用户重构了代码,所以答案是我不知道。我搞砸了,也许你能告诉我你的想法。谢谢
function VersionController($scope, dataService) {
  $scope.versions = dataService.getItems($scope.release.id.toString());
  console.log($scope.versions);
}