【问题标题】:In Angular, should we call validation functions inside .controller.js or in .html?在 Angular 中,我们应该在 .controller.js 中还是在 .html 中调用验证函数?
【发布时间】:2017-08-19 22:56:06
【问题描述】:

我有一个关于 Angular 的小问题。

假设我有一个如下所示的.html 代码:

<div> <span>{{billingController.amount}}</span> </div>

在我的控制器文件中,我像这样初始化值:

vm.billingController.amount = parseAmount(vm.billingController.amount );

总结一下:我拥有的每个变量都是这样初始化的,这样如果值是 null / undefined / 空的,我会使用 parseAmount 函数对其应用一些逻辑,以便默认值是什么我想要我的方式。

相对于调用这样的相同函数是否有任何性能提升:

<div> <span>{{billingController.parseAmount(billingController.amount)}}</span> </div>

将具有相同功能的.html 直接触发多次吗?使用第二个选项是否有任何性能问题?

在此先感谢大家。

【问题讨论】:

    标签: javascript html angularjs performance model-view-controller


    【解决方案1】:

    正确的做法是在 Angular js 中定义范围和模型,并在 html 中使用。与其他 MVC 框架不同,AngularJS 没有特定的类或函数来创建模型对象。相反,AngularJS 使用自定义方法和属性扩展了原始 JavaScript 对象。这些对象,在 AngularJS 术语中也称为范围,在 AngularJS 应用程序中充当视图和其他部分(指令、控制器和服务)之间的粘合剂。

    使用 ng-model 指令,您可以将输入字段的值绑定到在 AngularJS 中创建的变量。

    例子:

     <div>
         <span>Amount: ng-model="amount"  ng-bind="amount"</span>
    </div>
            <script>
        var app = angular.module('myApp', []);
        app.controller('myCtrl', function($scope) {
           var amount=getAmount();
            $scope.amount= parseAmount(amount);
             //you need to put the logic inside getamount()
        });
        </script>
    

    【讨论】:

      【解决方案2】:

      这两个是完全不同的东西

      当您在 js 中执行此操作时,它会将值分配回去

          vm.billingController.amount = parseAmount(vm.billingController.amount );
      

      在 html 中它只是一个显示

      <div>
           <span>{{billingController.parseAmount(billingController.amount)}}</span>
      </div>
      

      关于偏好:通常应该更喜欢在 js 中而不是 html 中具有自定义逻辑。仅使用 html 进行显示(尽可能),expression sandboxes 无论如何都不鼓励

      【讨论】:

        猜你喜欢
        • 2012-03-10
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 2015-03-09
        • 2022-01-19
        • 1970-01-01
        • 2020-09-28
        • 2021-08-25
        相关资源
        最近更新 更多