如何在Angular.Js中封装$ scope

时间:2016-01-09 12:00:50

标签: javascript angularjs angularjs-scope

我有一个模式,我想要使用两次,但具有不同的值。例如:

 .directive("day", function($scope){
     return {
        template: '<div>{{day}}</div>'
        }
    }

我可以在另外两个指令中使用它,但封装'day'来查看结果:

    <div>1</div>
    <div>2</div>

特别是如果我想保持所有'天'的绑定价值

2 个答案:

答案 0 :(得分:1)

您想要的是一个“隔离”范围,您可以将指令的属性从本地“隔离”范围绑定到父范围。

app.directive('day', function(){
  return {
    scope: {
      day: '='
    },
    template: '<div>{{day}}</div>'
  }
})

HTML

    <div ng-init="day1='Thursday'; day2='Friday'">

        <div day="day1"></div>
        <div day="day2"></div>

    </div>

结果

Thursday

Friday

有关指令范围的更多信息,请参阅AngularJS $compile API Reference -- scope

答案 1 :(得分:0)

你的意思是这样的吗?

&#13;
&#13;
app.directive('day', function(){
  return {
    scope: {
      dayValue: '='
    },
    template: '<div>{{dayValue}}</div>'
  }
})

app.directive('outerDirective', function(){
  return {
    link: function($scope){
      $scope.days = [1,2,3];
    },
    template: '<day day-value="day" ng-repeat="day in days"></day>'
  }
})
&#13;
&#13;
&#13;