2015-10-15 51 views
1

如何从通过JavaScript的角度Controller来Paper.js传递数据?如何传递从角度控制器的数据给JavaScript或Paper.js

这是一个问题几乎相同,这先前的问题:

Pass Angular scope variable to Javascript

第一个答案前面的问题就不会为我工作(我在下面的话),我不清楚地了解第二个答案(这是一个解决方法太)

编辑:我想通了,允许传递值 从角为Javascript有点俗气的解决方案:我知道这是不是角方式 可能有一些等缺点(和我会更乐意有 他们叫了) - 我展示它下面的答案)

是一个新的答案现已上市,两年后?

也许有一个paper.js直接的方法? (前面的问题没有涉及到paper.js)以下

我的代码和环境细节:

// snippet frome angular controller named "colorSelector" 

$scope.xCoor = image.xCoor; 
$window.xCoor = image.xCoor; //hoped this would work but doesn't 


//angular works fine in the html 


    <p> {{description}}</p> 
    <p>{{xCoor}} is the X coordinate, {{yCoor}}</p> 

编辑:删除NG重复包装,因为它并不直接适用于问题(第二编辑。清理,截至更多)

//paper.js successfully has access to global JS variables, but 
//I cannot get angular information into the JavaScript variables 
<script type="text/javascript"> 
    targetX = 250; targetY=270; //hardwired works (I'm only using x for example) 

    // targetX = {{image.xCoor}} doesn't work (no surprise) 
    // targetX = window.xCoor // I thought this might work? but it doesn't 
    // suggestion below from earlier S.O. question doesn't work for me 
    // targetX = angular.element(document.querySelector('[ng-controller="colorSelector"]')).scope().xCoor 
    </script> 

<!-- paper.js section below --> 
<script type="text/paperscript" canvas="myCanvas"> 
    //below works if variables are set above 
    var target = new Path.Circle({ 
     center: [targetX, targetY], 
     radius: 10, 
     strokeColor: "white" 
    }); 
</script> 

如果第二个答案的对前一个问题的“解决方法”的方式仍然有效,可能有人割肉出来一点给我吗? (他们建议将带有脚本标记的字符串中吗?)

+0

我认为这个问题是在执行顺序,你需要推迟paperscript执行,直到变量是由您的角度应用设置。还有一件事,在控制器中,你从'图像'得到的值,但似乎你有一个阵列'图像' – melsaqqa

+0

欣赏的想法。我的实际使用案例涉及每次更改画布一张图片。在这个例子中,我留下了“图像中的图像”,因为这是我创建缩略图菜单的方式,点击时可以调用改变当前图像的角度函数。这种特殊的paper.js工具的工作方式是将图像标签id中的图像拖到画布上。我的目标是使用该角函数将图像上的圆形覆盖图的x和y坐标更改为每个单独图像的存储值。 – Tom22

+0

位更多:当角函数被称为然而画布图像确实改变,它确实需要鼠标悬停在画布以显示新照片的第二动作(角度函数使最后消失,模糊使得新一个可见在实际画布上)。包括这一点,因为它可能会提示您怀疑的时机。我可能想问的第二个问题(但每次只有一个?)是如何强制一个paper.js函数由角函数内的某个东西触发。 – Tom22

回答

0

我想出了一个简单的变通(不知道为什么花了这么长时间)我知道这是不是角方式可能有一些其他缺陷(我会更乐意把他们叫出来)

// un-shown angular module defines $scope.xCoor 

<div id="xCoor" class="hide-me-offscreen"> 
    {{x-coor}} 
</d> 

<script type="text/javascript" > 
    var targetX = num(getElementById("x-coor").html) 
</script> 
相关问题