model。$ modelValue在指令中为NaN

看到这个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.$modelValueNaN当它的类型甚至不应该是一个数字。尽管如此,降价渲染。我可以添加一张typeof

model.$modelValue == 'string'支票,但我宁愿治疗根本原因。任何想法?

回答:

您的指令中的问题是,在对表达式进行求值之前,角度会触发一次手表。因此,第一次值是undefined。我不认为这是可以预防的,但是AngularJS是如何工作的。

val在渲染函数中添加了一个参数,以显示实际监视的值(记录到控制台-参见底部的小提琴)。在ngModelController

初始化$modelValue为NaN,这就是为什么NaN传递给函数代替undefined

但是由于makeHtml函数似乎期望使用字符串,因此一个简单的解决方法是,如果该值是伪造的,则将一个空字符串传递给它(将其转换为字符串可能更好)。

var htmlText = converter.makeHtml(model.$modelValue || '');

更新小提琴。

以上是 model。$ modelValue在指令中为NaN 的全部内容, 来源链接: utcz.com/qa/412413.html

回到顶部