动态创建的ui-sref链接无法正常工作

时间:2016-01-21 15:29:21

标签: javascript angularjs ionic-framework angular-ui-router

使用字典解析关键字上的一些文本并添加指向字典页面的链接。似乎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',
    }
  }
})

1 个答案:

答案 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);
}