【发布时间】: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