【问题标题】:JS function defined in AngularJS controller not workingAngularJS控制器中定义的JS函数不起作用
【发布时间】:2015-12-08 18:09:47
【问题描述】:

以下是我的控制器代码:

app.controller('HomeController', ['$scope', '$location', '$sce', '$routeParams', '$timeout', function($scope, $location, $sce, $routeParams, $timeout ) {
    // Configuration Variables:
    $scope.title = "Site Title";
    $scope.logosrc = "images/site_logo.gif";
    $scope.tagline = "This is the new tagline!!!";

    // This changes the shadowed aspect of the top nav and footer based on a checkbox
    $scope.shadowChange = function(cb){
        alert ("hi");
        return true;
    };

    // This converts any HTML code in the text to actual code so that it renders properly
    $scope.renderHtml = function(html_code)
    {
        return $sce.trustAsHtml(html_code);
    };

}]);

我在代码中使用 onClick 复选框调用 shadowChange 函数,如下所示:

<input type="checkbox" name="shadow" id="shadow" checked onClick="shadowChange(this);" />

我不仅将 HomeController 绑定到 body 标签,我还(以防万一)使用 HomeController 将相关代码包装在另一个 div 中,Chrome Inspector 甚至告诉我 HomeController 加载正常。

此外,控制器顶部的那些配置变量正在正确设置。

然而,当我单击复选框时,我收到一个错误,即 shadowChange 未定义。如果我尝试(只是为了测试)那里的另一个函数,renderHtml,我会得到同样的错误。然而,在我的另一个应用程序中,我以相同的方式使用它,并且效果很好。

我看不出是什么阻止了代码看到函数。

想法?

【问题讨论】:

    标签: javascript angularjs angular-controller


    【解决方案1】:

    您想使用ng-click 指令来访问控制器的范围。 (而不是onClick

    <input type="checkbox" name="shadow" id="shadow" checked ng-click="shadowChange(this);" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2015-08-26
      相关资源
      最近更新 更多