ng-click内部ng-repeat无法正常工作

时间:2016-11-16 16:08:14

标签: javascript angularjs angularjs-ng-repeat angularjs-ng-click route-provider

我正在使用routeProvider路由到" views / userspace.html"它使用" UserspaceController"

" views / userspace.html"识别此控制器并请求$ http请求。这个请求工作文件,我可以看到" views / userspace.html" (在ng-repeat内)。但是,在同一个控制器中,我已经定义了$scope.videoClick函数,它似乎不起作用。知道为什么吗?

   var application = angular.module("tss.application", 
    [
        "ngRoute",
        "ui.bootstrap"
    ]);

    application.config(function($routeProvider) 
    {
      $routeProvider
          .when("/", {
            templateUrl : "views/main.html",
            controller: "LoginController"
          })
          .when("/files", {
            templateUrl : "views/userspace.html",
            controller: "UserspaceController"
          });
    });

userspace_controller.js

  angular.module('tss.application').controller("UserspaceController",  
    function($scope, $log, $http, $uibModal)
    {       
        $http(
            {
                url     : "/dirlist",
                method  : "GET",
            }).then(function successCallback(response) 
            {
                $scope.lists = response.data;
            }, 
            function errorCallback(response) 
            {
                window.alert("Dir list could not be get");
            });     
        $scope.videoClick = function()
        {           
            $log.info('received.');
            $uibModal.open(
            {
                templateUrl: '/views/content.html',

            });
        };          
    });

userspace.html

   <li ng-repeat="list in lists" ng-click="videoClick(list.src)">{{list.name}}</li>

2 个答案:

答案 0 :(得分:2)

将您的功能更改为接受参数

$scope.videoClick = function(val) {
    $log.info('received.');
    $uibModal.open({
        templateUrl: '/views/content.html',

    });
};

或者更改HTML中的功能

<li ng-repeat="list in lists" ng-click="videoClick()">{{list.name}}</li>

答案 1 :(得分:0)

这是因为在你的;

AsyncTask

你有一个不需要的逗号,这使得该函数抛出一个错误,因为它期待另一个属性。

此外,如果您使用传递HTML的变量,则应使用Sajeetharan的答案。