我如何将其从jQuery移植到AngularJS

时间:2013-04-12 14:10:51

标签: javascript jquery angularjs

我正在从事人工智能项目。我在网页上有一个小坦克和一个网格,坦克只是这样的一个div:

<div id="agent" ></div>

然后我使用jQuery做这样的事情:

agent = $('#agent').setUpAgent();

//examples of usage:
agent.goUp();
agent.goLeft();
agent.doActions['left','right','down']; // (will execute: goLeft, goRight, goDown functions.

这些方法的实施非常简单:

Agent.prototype.goLeft = function() {
    this.agentDiv.rotate(45); // rotate the jQuery-wrapped div
    this.agentDiv.animate({"margin-left": "-=51px"}, "slow"); //51 is the step size
}

正如您所看到的,代理上的移动是通过jQueryAnimate更改其边距来实现的。将它移植到angularJS是否合乎逻辑?例如:

<div agent="nameOfJavascriptObject" ></div>

因为AngularJS会通过设置手表自动更新我的视图,我该如何处理?我是否应该有一个带有“actionsToBeExecuted”的模型对象,当它不为空时我会触发“goUp(),goLeft()...”等功能?如何才能使功能在更改时触发?我对如何移植它,甚至是否应移植它都毫无头绪。

1 个答案:

答案 0 :(得分:4)

这是一个简单的例子,你怎么做:

http://plnkr.co/edit/7wG08Twvt7jufIpvjHFl?p=preview

您可以简单地表达代理的外观属性(例如位置,角度) 使用javascript对象并操纵属性。

在指令中,将该对象绑定到范围并$watch 外观属性和动画为基础 关于属性如何变化。 (例如,如果angle更改,则调用rotate()