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