Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有逻辑地重复_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 有逻辑地重复

Javascript 有逻辑地重复,javascript,html,angularjs,Javascript,Html,Angularjs,我有这个东西 recipe = { name : $scope.name, ingredients : $scope.ingredients } 我以两种不同的方式保存成分,即 ingredients1 = [{ingredient : 'berry'}, {ingredient : 'honey'}] ingredients2 = ['berry', 'honey']; 在ng重复中,我需要根据情况选择过去的成分 //ingredients1 <li ng-repea

我有这个东西

recipe = {
    name : $scope.name,
    ingredients : $scope.ingredients
}
我以两种不同的方式保存
成分
,即

ingredients1 = [{ingredient : 'berry'}, {ingredient : 'honey'}]
ingredients2 = ['berry', 'honey'];
在ng重复中,我需要根据情况选择过去的成分

//ingredients1
<li ng-repeat="ingr in recipe.ingredients track by $index">
    <b>{{ingr}}</b>
</li>

//ingredients2
<li ng-repeat="ingr in recipe.ingredients track by $index">
    <b>{{ingr.ingredients}}</b>
</li> 
//ingredients1
  • {{ingr}}
  • //ingredients2
  • {{ingr.配料}

  • 对于这两种情况,我是否可以使用一些条件语句,例如
    if
    else

    如果定义了
    ingr.component
    ,则绑定它,否则绑定
    ingr
    ,即:

    请尝试使用以下代码:

    angular.module('myApp',[])
    .controller('MyCtrl',函数($scope,$http){
    var myScope=this;
    myScope.components=[{
    成分:“浆果”
    }, {
    成分:“蜂蜜”
    }“浆果”、“蜂蜜”];
    })
    
    
    • {{!!ingr.component?ingr.component:ingr}

    如果你知道你永远不会有第三个变体,你可以这样做

    <li ng-repeat="ingr in recipe.ingredients track by $index">
      {{ingr.ingredient || ingr}}
    </li>
    
  • {{ingr.component | | ingr}}
  • 然而,这并不是那么可维护的。我认为将此逻辑委托给助手函数可能更简洁

    <li ng-repeat="ingr in getIngredients(recipe.ingredients)">
      {{ingr}}
    </li>
    
    
    function getIngredients(ingredients) {
      // Logic to flatten your mix of objects and strings
    }
    
  • {{ingr}}
  • 功能性成分(成分){ //将对象和字符串的组合展平的逻辑 }

    这将允许您添加/更改配方成分的模型,同时还可以创建可以单独进行单元测试的逻辑。

    有两种方法,所有方法都在下面列出。 这是一个

    数组1
    
  • {{ingr.component | | ingr}}
  • 阵列2
  • {{ingr.component?ingr.component:ingr}
  • 阵列3
  • {{ingr.component | | ingr}}
  • {{ingr.component?ingr.component:ingr}

  • 什么情况?在哪里?我不知道你想做什么:)实际上,你甚至可以把它简化为{{ingr.component | | ingr}}。
    <li ng-repeat="ingr in getIngredients(recipe.ingredients)">
      {{ingr}}
    </li>
    
    
    function getIngredients(ingredients) {
      // Logic to flatten your mix of objects and strings
    }
    
    angular.module('myApp',[])
    .controller('myCtrl', function($scope){
      $scope.array1 = [{ingredient : 'berry'}, {ingredient : 'honey'}]
      $scope.array2 = ['berry', 'honey'];
      $scope.array3 = [{ingredient : 'berry'}, {ingredient : 'honey'}, 'berry', 'honey'];
    });