2013-05-03 154 views
0

我們正在使用Angular,並且在解析指令中的變量時遇到問題。 這撥弄顯示了我們的問題:使用過濾器把這些在指令中使用指令會導致綁定問題

  1. 下面是完整的代碼:http://jsfiddle.net/VX5LE/65/

    //data-translate should handle the translating of the useableButton text 
    app.directive('window', ['translateService', function (translateService) { 
    
        return { 
         restrict: 'E', 
         transclude: true, 
         scope: { 
          useableButtons: '='}, 
         replace: true, 
         template: 
           '<div>' + 
            '<button data-ng-repeat="useableButton in useableButtons" data-translate>{{useableButton}}</button>' + 
          '</div>' 
        }; 
    }]); 
    

    我已經看到了一些答案,通過解決這個問題。 - 這實際上是我們目前的解決方案,但這阻礙了我們的不同功能。

  2. 將手錶附在控制器上。 - 我們實際上希望避免在我們的控制器中使用手錶,因爲如果您的手錶中有很多手錶會使代碼變得很髒。

最好我希望看到一個解決方案駐留在translate指令中,而不會混淆控制器。

回答

0

您可以通過手動內插值然後使用所需範圍的$ eval函數對其進行解析來完成此操作。

這裏是小提琴:

app.directive('translate', ['translateService', '$interpolate', function (translateService, $interpolate) { 
    return { 
     restrict: 'A', 
     link: function (scope, element, attrs) { 
      var pHTML = element.html(); 
      var parsed = $interpolate(pHTML); 
      var translated_result = translateService.translate(scope.$eval(parsed)); 
      element.text(translated_result); 
     } 
    } 
}]); 
http://jsfiddle.net/VX5LE/66/

的翻譯,指令代碼