2013-05-03 84 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/

的翻译,指令代码