【发布时间】:2014-05-25 22:41:10
【问题描述】:
我已经用 angular.js 建立了一个应用程序。我正在通过 ng-repeat 创建一个菜单。每个链接都会调用指令中的一个函数,该指令使用 paper.js 将文本绘制到画布上。
但直到我在浏览器中移动鼠标后画布才会更新。在画布上绘制的函数正在立即调用,但是如果没有鼠标离开链接,画布什么也没有显示?
在指令中调用draw函数的angular.js控制器:
.controller('NavCtrl', function($scope, $location, $http, WorkService) {
$scope.works = [];
$http({method: 'GET', url: '/api/v1/work'}). //collects all works
success(function(data, status, headers, config) {
$scope.works = data.objects;
});
$scope.setTitle = function(work) {
$scope.currentTitle=work.title;
$scope.writeTitle(work.title);
};
})
angular.js 指令:
.directive('draw', function () {
return {
restrict: 'A',
link: function postLink($scope, element, attrs) {
$scope.writeTitle = function(inText){
var letters = inText.split('');
for(var i=0; i<2; i++){
var text = new PointText(new Point(getRandom(0, 200), getRandom(0, 100)));
text.content = letters[i];
text.style = {
fontFamily: 'Arial',
fontWeight: 'normal',
fontSize: 14,
fillColor: 'red',
justification: 'center'
};
}
}
function getRandom(min, max) {
return Math.random() * (max - min) + min;
}
function initPaper() {
paper.install(window);
paper.setup('canvas');
}
initPaper();
}
};
});
base.html 中调用控制器函数进行绘制的菜单:
<div ng-controller=NavCtrl>
<nav>
<a href='#/bilgi'>bilgi</a>
<a ng-click="setTitle(work)" href='#/ardiye/{{work.id}}' ng-repeat='work in works'>{{$index+1}}</a>
</nav>
</div>
---- 更新----
我已添加:
<script type="text/paperscript" canvas="canvas">
function onFrame(event) {
}
</script>
这个空的 onFrame 函数到 base.html,现在画布正常更新。但为什么?
【问题讨论】:
-
请提供您遇到问题的代码。
-
好的。我已经用代码编辑了我的帖子。只有当我将鼠标移到画布上时,画布才会更新。
-
我发现在两种情况下画布会更新。一种是鼠标光标在画布上移动时,另一种是鼠标光标在正文元素周围的页边距上时...
-
您能否发布您用于应用“draw”指令的 HTML 代码?
-
jsfiddle.net/burkesk/ffNYP/11 这个小提琴有帮助吗?