2013-04-14 54 views
2

比方說,我有一個指令,它看起來像:布爾範圍值

<foo-bar bar-foo="booleanValue"></foo-bar> 

booleanValue這裏屬於母公司的範圍 - 這是連接到視圖控制器的範圍,其中上述指令元素位於。

現在,在我的指導,我已經定義了指令,如下所示:這裏

app.directive('fooBar', function() { 
    return { 
     restrict: 'E', 
     scope: { 
      barFoo: '=barFoo' 
     }, 
     link: function(scope, iElement, iAttrs) { 
      scope.$watch('barFoo', function() { 
       if(scope.barFoo !== true) return; 
      }); 
      //Code to execute when barFoo is true 
     } 
    }; 
}); 

問題是,傳遞給barFoo值是一個布爾值,但它最終是一個字符串值。因此`if(scope.barFoo!== true)將永遠是成功的,鏈接器函數永遠不會執行。我不想將代碼更改爲if (scope.barFoo === "true")

如何將一個布爾值傳遞給作用域?

編輯:我想在這裏補充一點,booleanValue確實是一個布爾值(通常作爲真傳遞)由父控制器到指令。只要這個值被傳遞,它就會被轉換爲字符串而不是其他的布爾值。

回答

2

假設值在控制器中設置正確,它應該作爲布爾值傳遞給指令。

plunker說明了這一點。

+0

其實問題在於我忘記從分配給另一個控制器的元素中刪除'ng-controller'屬性。因此總共有兩個控制器 - 一個來自指令,另一個來自'ng-controller'屬性 - 刪除後者解決了這個問題。感謝您告訴我,我的問題確實是我應用程序中的一個錯誤,而不是標準行爲! – callmekatootie