一直在玩这个,并得到一个非常奇怪的错误。 我不会把整个代码放在这里,因为整个地方都有很多spagetti的方法,但我认为我可以隔离代码。
我有一些代码会根据数据库中的一些变量在屏幕上生成一堆按钮。主要是链接,但我希望数据库保存有关如何处理它的信息。所以我希望我的功能: 从数据库中获取数据(完成) 找一些额外的条目,二进制声音和图像(完成) 画一个漂亮的按钮(它不漂亮,但它是一个按钮) 当用户按下按钮时创建ng-click事件(完成第1步) 编译html以整理ng-click的dom(它运行...)
这一切似乎都有效,我在屏幕上显示一个按钮,但是当我按下它时,我收到以下错误消息:
Uncaught TypeError: scope.$apply is not a function
执行此操作的代码(简化):
var newPad = '<button class="padbtn" ';
newPad = newPad + 'data-ng-click="'+dataPad.comSound+'('+dataPad.typeSound+','+padPos+')">';
newPad = newPad + '<img class="padImg" src="/api/getImg/'+dataPad.srcImage+'" style="width:175px; height 175px;"/>'
newPad = newPad + '<br/>'+dataPad.name+'</button>';
console.log(newPad);
var padElement = $compile(newPad)(true);
console.log(padElement);
$('#cell'+padPos).append(padElement);
使再现(和自包含)
更简单var newPad = '<button class="padbtn" data-ng-click="playBeat(smpBeat,C1)"><img class="padImg" src="/api/getImg/554240a17b221e1a2ffda099" style="width:175px; height 175px;"/><br/>Clap</button>'
var padElement = $compile(newPad)(true);
$('#targetID').append(padElement);
图片和所有内容都加载了,但是一旦我按下按钮,我就会收到错误消息。
答案 0 :(得分:1)
在这里你必须编译$scope
var newPad = '<button class="padbtn" data-ng-click="playBeat(smpBeat,C1)"><img class="padImg" src="/api/getImg/554240a17b221e1a2ffda099" style="width:175px; height 175px;"/><br/>Clap</button>'
var padElement = $compile(newPad)($scope);
$('#targetID').append(padElement);
请参阅工作示例here