AngularJs属性与指令中的范围

时间:2015-08-21 13:06:31

标签: angularjs angularjs-directive angularjs-scope

在define指令中使用变量虽然属性与范围有什么区别?例如 -

angular.module('tModule')
  .directive('tModule', function() {

    return {
      restrict: 'E',
      scope: true,
      templateUrl: function(element, attributes) {
        return  attributes.variable1;
      }
    }
});

与我使用范围相比。如下 -

angular.module('tModule')
  .directive('tModule', function() {

    return {
      restrict: 'E',
      scope: {
        variable1: "=variable1",
        variable2: "=variable2"
      },
      templateUrl: function() {
        return variable1;
      }
   }
 });

有什么区别和优点?

1 个答案:

答案 0 :(得分:4)

根据您的示例存在一些差异:

  1. 在上面的示例中,指定scope: true表示创建父作用域的新实例。在底部示例中,使用对象语法意味着创建隔离范围。因此,当您使用范围语法将参数传递给指令时,您本身就会为该指令创建一个独立的范围。

  2. 如果您想利用双向数据绑定(=)或方法调用(&),那么您需要使用第二种方法来传递范围而不是属性。