2013-04-09 58 views
0

我目前正在从Knockout切换到Angular。我现在所面临的主要问题是将我的原始模板转移到Angular会识别的东西。AngularJS将特定数据绑定到模板

具体来说,这里有一点我无法转移代码:

<!-- ko template: { name: 'SquareTempl', data: Squares[5] } --><!-- /ko -->

在淘汰赛,这将附上广场[5] SquareTempl,这样当模板被渲染,它所以使用Squares [5]中的成员(或任何附加的数据)。

我需要重复Squares [0]〜Squares [11]的过程。我不能使用ng-repeat,因为我不会按数字顺序遍历它们。

理想的情况下,这将是很好,如果我能做到沿着

<td class="Square" id="five" ng-include src="'SquareTempl.html'" ng-data="Squares[5]">

任何想法线的东西?

这里有一个JSFiddle,我写了一个概述我尝试使用ng-model的失败尝试。

http://jsfiddle.net/fZz3W/9/

+0

你试过'ng-model'吗? – Tyrsius 2013-04-09 02:16:01

+0

@Tyrsius我不确定你的意思。 'ng-model'而不是伪造的'ng-data'我放在我的例子中? – dk123 2013-04-09 02:17:03

+0

是的,这就是我的意思 – Tyrsius 2013-04-09 02:21:29

回答

2

两件事情:首先,你可以让自己YourApp.directive("ngData", function() {})实现它其次NG数据是可用的,你需要的HTML是另一个文件的一部分?一个简单的方法来完成你的角度寻找的内容与ng-repeat像:

<td ng-repeat="item in Square"> 
    <div>{{item.name}}</div> 
</td> 

Square阵列更新附加后将会作出修改。

审查修改后的jsfiddle:http://jsfiddle.net/TdWMF/1/

因此,这主要是一个黑客以达到你想要什么,直到我可以为您提供更好的解决方案:

使用混合为了 ng-repeat

二更新:http://jsfiddle.net/TdWMF/3/

基本上:

<div ng-repeat="index in [4, 2, 0, 3, 1]"> 
    square index: {{index}}<br /> 
    square: {{Squares[index]}} 
</div> 

很丑很不理想,我知道。我也推荐在函数中执行order array generate,然后执行:ng-repeat="index in displayOrder(Squares)"

+0

我不一定需要将html放在另一个文件中,但我不能使用ng-repeat,因为我没有按照上面所述的数字顺序渲染项目。我会开始研究自定义指令,但是如果可以的话,如果能够给我一个例子,这将是很好的;我仍然无法理解angularjs的基础知识。 – dk123 2013-04-09 02:59:39

+0

@ dk123如果你没有渲染它们为什么使用数组?或者,按照您想呈现的顺序排列它们。此外,再次查看答案我重新格式化您的原始小提琴使用'ng-repeat'。 – 2013-04-09 03:00:59

+0

@ dk123我也很抱歉,我没有注意到你声明你不能使用'ng-repeat'的那个子句。 – 2013-04-09 03:02:05