zoukankan      html  css  js  c++  java
  • AngularJS数据绑定的最佳实践

    1. 由于JavaScript自身的特点,以及它在传递值和引用时的不同处理方式,通常认为,在视图中
    通过对象的属性而非对象本身来进行引用绑定,是Angular中的最佳实践。

    <script type="text/javascript">
    var obj = {x : 1};
    alert(obj) // [object Object]
    alert(obj.x) // 1
    function foo(o) {
        o = 100;
        alert(o);// 100
    }
    foo(obj);
    alert(obj); // 仍然是 [object Object]
    alert(obj.x); // 仍然是1, obj并未被修改为100.
    
    var str = "abc";
    alert(str[0]); // "a"
    str[0] = "d";
    alert(str[0]); // "a"
    alert(str); // "abc"
    str="dbc"
    alert(str); // "dbc"
    </script>

    准确的说,JS中的基本类型按值传递,对象类型按共享传递的(call by sharing,也叫按对象传递、按对象共享传递)。

    最早由Barbara Liskov. 在1974年的GLU语言中提出。该求值策略被用于Python、Java、Ruby、JS等多种语言。
     
    该策略的重点是:调用函数传参时,函数接受对象实参引用的副本(既不是按值传递的对象副本,也不是按引用传递的隐式引用)。

    它和按引用传递的不同在于:在共享传递中对函数形参的赋值,不会影响实参的值。如上面例子中,不可以通过修改形参o的值,来修改obj的值。

    2. 将控制器命名为[Name]Controller而不是[Name]Ctrl是一个最佳实践。

    3. 控制器应该尽可能保持短小精悍,而在控制器中进行DOM操作和数据操作则是一个不好的实践。

    设计良好的应用会将复杂的逻辑放到指令和服务中。通过使用指令和服务,我们可以将控制器重构成一个轻量且更易维护的形式

    angular.module('myApp', [])
      .controller('MyController', function($scope,UserSrv) {
      // 内容可以被指令控制
      $scope.onLogin = function(user) {
      UserSrv.runLogin(user);
      };
    });
  • 相关阅读:
    优质Android小部件:索尼滚动相册
    Linux常用命令:文件与目录
    Android高效计算——RenderScript(二)
    Android高效计算——RenderScript(一)
    实用控件分享:自定义逼真相机光圈View
    Binder中的asInterface解析
    Android Adapter的几个方法
    Android中各种Drawable总结
    win10配置CUDA+Tensorflow2.0的一些经验
    关于Flash Helper Service的问题
  • 原文地址:https://www.cnblogs.com/sunspeedzy/p/6878394.html
Copyright © 2011-2022 走看看