gpt4 book ai didi

javascript - 双向数据绑定(bind)不适用于 Angular.js 中的指令

转载 作者:行者123 更新时间:2023-12-04 01:30:35 25 4
gpt4 key购买 nike

我尝试实现一个指令,该指令必须使用 Angular 符号 {{...}} 更新特定代码块。问题是更新后的代码不再编译。

指令:

.directive('i18n', [function() {
'use strict';
return function(scope, element) {
var bindLabel = '{{labels.' + element.text() + '}}',
//create an empty object
obj = {

};
obj[element.text()] = '';
//extend the labels
angular.extend(scope.labels, obj);
element.text(bindLabel);
};
}])

简单的 HTML 代码:

<title i18n>title</title>

编译后的HTML代码:

<title i18n="">{{labels.title}}</title>

期望的输出:

 <title i18n="">This is my title :)</title>

{{labels.title}} 在 Controller 中实现。

感谢您的帮助!

最佳答案

要动态编译 DOM 元素,请使用 $compile 服务:

element.html(value);

// Compile the new DOM and link it to the current scope

$compile(element.contents())(scope);

在您的示例中,它看起来像这样:

.directive('i18n', [ '$compile', function($compile) {
'use strict';
return function(scope, element) {
var bindLabel = '{{labels.' + element.text() + '}}',
//create an empty object
obj = {

};
obj[element.text()] = '';
//extend the labels
angular.extend(scope.labels, obj);

// Fill element's body with the template

element.html(bindLabel);

// Compile the new element and link it with the same scope

$compile(element.contents())(scope);
};
}]);

您可以在此处找到更多信息:http://docs.angularjs.org/api/ng.$compile

关于javascript - 双向数据绑定(bind)不适用于 Angular.js 中的指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16675348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com