4

我正在尝试创建两个不同的对象文字并将它们绑定到不同的视图(<table>s)。但是,我不知道该怎么做。我尝试了以下方法,在其中data-ng-init一个父容器(div)中声明了两个对象文字。我还尝试data-ng-init为该 div 设置两个不同的指令,并在每个指令中使用一个对象文字。然而,这两种方法都不起作用,我得到了错误(如果有人想看到它们,会发布)。

我尝试过的示例:

<div id="recipes" data-ng-init=" 
  dessertsdrinks = [
  {name: 'Apple Pie Popcorn',  url: 'pdfs/recipes/desserts_and_drinks/Apple Pie Popcorn.pdf'},  
  {name: 'Zucchini Muffins',  url: 'pdfs/recipes/Zucchini Muffins.pdf'} 
  ];

  maineats = [ 
  {name: 'Autumn Enchilada Casserole',  url: 'pdfs/recipes/Autumn Enchilada    Casserole.pdf'},
  {name: 'Build your own Taco',  url: 'pdfs/recipes/Build your own Taco.pdf'},]
  ">

  <table id="dessertsdrinks">
    <th>Desserts and Drinks</th>
        <tr data-ng-repeat="recipe in dessertsdrinks | filter:recipesearch | orderBy:'name'">
        <td><a href="{{ recipe.url }}"> {{ recipe.name }} </a></td>
        </tr>
   </table>

<table id="maineats">
        <th>Main Eats</th>
            <tr data-ng-repeat="recipe in maineats | filter:recipesearch | orderBy:'name'">
            <td><a href="{{ recipe.url }}"> {{ recipe.name }} </a></td>
            </tr>
       </table>
 </div>

当我只有一个对象字面量和一个对象字面量时,data-ng-init它可以完美运行。但是我怎么能用两个不同的列表来做到这一点呢?有没有更好的办法?

例如,我是否可以有一个控制器,它$scope根据视图的(表的)id标签或其他东西将对象文字绑定到?像这样:

伪代码

function recipeController(){
     if $scope id == "desertsdrinks" {
          $scope.recipes = [{.. dessert and drink recipe obj literal ..}];
     } else if $scope id == "maineats" {
          $scope.recipes =[{.. main eats recipe obj literal..}];
     }
 }
4

2 回答 2

3

只需在控制器内移动对象即可:

$scope.dessertsdrinks = [
  {name: 'Apple Pie Popcorn',  url: 'pdfs/recipes/desserts_and_drinks/Apple Pie Popcorn.pdf'},  
  {name: 'Zucchini Muffins',  url: 'pdfs/recipes/Zucchini Muffins.pdf'} 
];

$scope.maineats = [ 
  {name: 'Autumn Enchilada Casserole',  url: 'pdfs/recipes/Autumn Enchilada    Casserole.pdf'},
  {name: 'Build your own Taco',  url: 'pdfs/recipes/Build your own Taco.pdf'}
]

无需更改在 html 中访问它们的方式。

于 2013-07-25T06:27:11.407 回答
-1

您还可以将对象文字直接传递给 ng-init 指令。每个属性(名称由您决定)值都将被评估并且主要在范围内可用。

ng-init="{a: dessertDrinks = [...], b: maineats = [...]}"

于 2013-09-12T19:35:28.370 回答