隔离作用域中的4种数据绑定策略 - fanghm/angularjs_notes GitHub Wiki

  • = or =attr: 隔离作用域的属性与父作用域的属性进行双向绑定,任何一方的修改均影响到对方,这是最常用的方式;

  • @ or @attr: 隔离作用域的属性与父作用域的属性进行单向绑定,即隔离作用域只能读取父作用域中的字符串值:父作用域中属性的变化,在隔离作用域中会同步变化,而隔离作用域中的绑定变化,父绑定是不知道的。

  • & or &attr: 以函数的方式读写父作用域的属性;当 directive 中有什么动作需要更新到父 scope 中的时候,可以通过这种方式调用父scope (如controller)中的函数。

 app.controller("myController", function ($scope) {
        $scope.value = "hello world";
        $scope.click = function () {
            $scope.value = Math.random();
        };
    }).directive("isolatedDirective", function () {
        return {
            scope: {
                action: "&"
            },
            template: '<input type="button" value="在directive中执行父scope定义的方法" ng-click="action()"/>'
        }
    })
  • <: 单向数据绑定,Angular 1.5开始引入

Reference: https://www.ibm.com/developerworks/cn/opensource/os-cn-AngularJS/index.html