【问题标题】:Can't find method in $scope after angular $compile角度 $compile 后在 $scope 中找不到方法
【发布时间】:2019-07-17 14:44:26
【问题描述】:

对不起,如果这是一个微不足道的问题,我是 AngularJS 和前端开发的新手。

我正在尝试使用 bootbox 创建一个模式,如下所示:
服务中:

function _modalData(){
    let element = "<div onclick=\"saveSelection(true);\"><b>Save</b></div>" /* etc*/
    return $compile(element)(v_scope);
}

function openModal(){
    bootbox.dialog({
        animate: false,
        message: _modalData(),
        onEscape: true,
        backdrop: true,
        scrollable: true
    });
}

在控制器中:

$scope.saveSelection= function (keepData) {
    ...
}

我将$scope放在变量v_scope中,并且已经在同一个服务中的其他模态中使用了很多,所以我认为他还可以,但是当我试图点击div时,有一个问题说“找不到 saveSelection”,有谁知道是什么导致了这个错误?


新代码:

我把onclick改成ng-click,定义元素后在作用域内添加函数

let element = "<div ng-click=\"saveSelection(true);\"><b>Save</b></div>";

v_scope.test = function () {...}

我已经解决了,不知道为什么,但现在它正在工作..如果有人能解释为什么会很好

【问题讨论】:

  • 使用ng-click 指令而不是onclick
  • 它停止给我一个错误,但点击没有调用该函数
  • 为什么人们仍然将 $scope 注入到他们的控制器中?大约 5 年前,Google 开始推荐使用 controllerAs 语法。继续阅读 components 和 controllerAs 语法并停止注入 $scope。你会写出更好的 Angular 应用程序。

标签: javascript jquery html angularjs


【解决方案1】:

onClick 是一个 javascript 事件处理程序,它不能调用 angular 的控制器函数。要调用控制器的函数,您必须使用 ng-click 这是角度指令来处理角度中的点击事件。

onClick用于调用javascript原生函数,ng-click用于调用angular函数。

【讨论】:

    猜你喜欢
    • 2015-03-16
    • 2015-11-19
    • 2015-02-21
    • 2021-08-14
    • 1970-01-01
    • 2016-04-29
    • 2022-01-23
    相关资源
    最近更新 更多