您的指令中的问题是,在对表达式进行求值之前,角度会触发一次手表。因此,第一次值是undefined。我不认为这是可以预防的,但是AngularJS是如何工作的。
我val在渲染函数中添加了一个参数,以显示实际监视的值(记录到控制台-参见底部的小提琴)。在ngModelController初始化$modelValue为NaN,这就是为什么NaN传递给函数代替undefined。
但是由于makeHtml函数似乎期望使用字符串,因此一个简单的解决方法是,如果该值是伪造的,则将一个空字符串传递给它(将其转换为字符串可能更好)。
var htmlText = converter.makeHtml(model.$modelValue || ’’);
更新小提琴。
解决方法看到这个jsfiddle:http ://jsfiddle.net/8bENp/66/
如果您查看JavaScript控制台,将会看到以下内容:
TypeError: Object NaN has no method ’replace’ at makeHtml (https://raw.github.com/coreyti/showdown/master/compressed/showdown.js:62:705) at render (http://fiddle.jshell.net/_display/:50:42) at link (http://fiddle.jshell.net/_display/:54:13) at k (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js:42:321) at e (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js:38:198) at k (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js:42:261) at e (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js:38:198) at https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js:37:332 at https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js:15:440 at Object.e.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js:85:416) <markdown ng-model='someCode' class='ng-pristine ng-valid'> angular.min.js:60
问题是,model.$modelValue是NaN当它的类型甚至不应该是一个数字。尽管如此,降价渲染。我可以添加一张typeofmodel.$modelValue == ’string’支票,但我宁愿治疗根本原因。任何想法?