用于视图模板中的函数调用的AngularJS命名空间

时间:2016-08-01 23:51:57

标签: javascript html angularjs templates

我有一个像这样的控制器的div

<div ng-controller= "merchandiseListCtrl as ml">

在js文件中,我有几个函数调用并在返回时呈现一个对象。

  vm.getlaptopTotal = (productCatergory) => getTotal(productCatergory);

  var getTotal = function (_) {
    var res = {
      count: 0,
      total: 0,
      products: []
    };
    _.map((item) =>{
      if(item.purchased){
        res.count += 1;
        res.total += item.price;
        res.products.push(item.product);
      }
    });
    return res;
  };

因此,显而易见的是,我返回了具有属性的obj res:count,total和products。

在HTML视图模板中,我想要更短的命名空间,快捷方式来减少我的函数调用的模式ml.fn(x).products以返回属性&#39;某些字段的值。换句话说,我想分配ng-bind ='myTotal = ml.fn(x)'之类的东西,但后来我遇到了大量关于$rootScope的错误。我应该怎样做才能为这种情况提供更好的命名空间,而复杂性可能会走到这一步:funcObj.subobj.property.childproperty.grandchildproperty?那么可以实现可访问性和可读性吗?

这是我的HTML代码

        <div>{{ml.myTotal = ml.getlaptopTotal(ml.laptops)}}>
          <!-- display the selection -->
          Laptop count: {{ ml.myTotal.count }} units
          <br>
          <div ng-if="ml.myTotal.products">
            <ul ng-repeat="product in ml.myTotal.products">
              <li>{{$index+1}}) {{product}}</li>
            </ul>
          </div>
        <br>
        </div>

编辑1:进入this error因为现在产品数组funcObj()。产品是动态的。不知道如何修复。但之前,我使用funcObj()作为ng-click事件处理程序。

谢谢,

0 个答案:

没有答案