使用字典解析关键字上的一些文本并添加指向字典页面的链接。似乎ui-sref链接根本不起作用。这是我的功能:
/**
* adds links to text instead of an dictionary word
* @param {string} text
*/
Dictionary.prototype.wrapTextWordsInLinksToDictionary = function(text) {
var i, len, pattern, re;
// internal wrapping fn
function wrapInLink(match) {
var result = '<a ui-sref="app.dictionary">' + match + '</a>';
// console.log(result);
return result;
}
for (var modelName in this.words) {
i = this.words[modelName].word.length - 1;
// starting from plurals and not doing singular if plural is done already
while (i >= 0) {
pattern = this.words[modelName].word[i];
re = new RegExp(pattern, "g");
text = text.replace(re, wrapInLink);
break;
i--;
}
}
return text;
}
解析控制器中的一些对象:
//...
if (typeof vm.disease[propName] === 'string') {
vm.disease[propName] = Dictionary.wrapTextWordsInLinksToDictionary(vm.disease[propName]);
}
//...
和模板的一部分:
//...
<p ng-bind-html="vm.disease.controlDesc"></p>
//...
控制台没有错误,但链接根本无法点击。有人能说出它可能是什么吗?干杯!
当我添加href="#/app/dictionary"
代替ui-sref=...
时更新它可以正常工作。
Upd 2 Stateprovider:
.state('app.dictionary', {
url: '/dictionary',
views: {
'menuContent': {
templateUrl: 'templates/dictionary.html',
controller: 'DictionaryStateController',
controllerAs: 'vm',
}
}
})
答案 0 :(得分:0)
解析控制器中的一些对象: 在Controller中注入$ compile服务
if (typeof vm.disease[propName] === 'string') {
vm.disease[propName] = Dictionary.wrapTextWordsInLinksToDictionary(vm.disease[propName]);
vm.disease[propName] = $compile(vm.disease[propName])($scope);
}