0

當創建一個指令時,同時使用雙向綁定使用=定義隔離範圍有沒有什麼辦法可以綁定一個範圍變量數組。即。如果在我的控制器中有我定義的對象,如$scope.one$scope.two等,並且可以有任意數量的那些 - 我希望指令能夠處理它們的可配置數量。我怎麼能這樣做?AngularJS指令雙向綁定一個可配置數量的變量

我不能這樣做,因爲使用該指令可以有十個另一個控制器,所以我希望它是靈活:

.directive("example", function() { 
    return { 
     scope: { 
      one: "=", 
      two: "=", 
      three: "=" 
     }, 
    ... 
+0

你有'attrs'(屬性)對象,但你應該傳遞一個具有儘可能多的屬性的對象,你想要的指令的作用域 - 這是處理這個問題的首選方法 –

+0

你是否需要變量?關閉使用(或)您是否需要使用變量數組來進行雙向綁定,以便每次指令中的變量值發生變化時,它都應該反映在主控制器中? – Arkantos

+0

爲什麼要使用如此多的單個作用域變量而不能作爲一個對象傳遞? – charlietfl

回答

1

當然,它是:

.directive('example', function() { 
    return { 
    scope: { 
     config: '=' 
    }, 
    link: function(scope) { 
     var firstOption = scope.config[0]; 
     var secondOption = scope.config[1]; 
     //... 
    } 
    } 
} 

的數組選項必須存儲在一個固定的索引處,所以它的可讀性會低於傳遞一個配置對象對象

.directive('example', function() { 
     return { 
     scope: { 
      config: '=' 
     }, 
     link: function(scope) { 
      var firstOption = scope.config.firstOption; 
      var secondOption = scope.config.secondOption; 
      //... 
     } 
     } 
    } 
+0

更好地使用[angular.extend](https://docs.angularjs.org/ api/ng/function/angular.extend)設置默認值以取消設置默認值,但這是一個很好的答案 –

+0

啊,謝謝,這是有道理的 - 我會用這種方式嘗試。 – user648931

+0

@ user648931如果這個答案解決了您的問題,您可以隨時將其標記爲已接受 –

相關問題