当前位置: 首页 > 面试题库 >

model。$ modelValue在指令中为NaN

姜天宇
2023-03-14
问题内容

看到这个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 || '');

更新小提琴。



 类似资料:
  • 问题内容: ..如果您使用ng-model,则必须在某处有一个点。如果没有点,那么您就在做错误..” 但是,Angular.JS网站中的第一个示例(基础知识)似乎与此矛盾。是什么赋予了?自从MTV聚会以来,Angular.JS是否已更改,因为它现在对ng- model更宽容了? 问题答案: 在处理范围继承的复杂性时,这个小点非常重要。 该egghead.io视频“点”有一个很好的概述,做到这一点非

  • 问题内容: 因此,第一天使用angularjs进行工作,但我做不到。我正在尝试使用angular指令模仿html5占位符。直到我向该字段添加ng- model为止,它完全可以工作,然后它仅在用户与该字段进行交互并且破坏该字段具有的任何值之后才可以工作。 在这里编码 http://jsbin.com/esujax/32/edit 指令 HTML 似乎超级简单,但我迷路了 问题答案: 您的样本中仅有几

  • 问题内容: 我正在尝试创建一个指令,该指令将创建与创建指令的元素具有相同ng-model的输入字段。 到目前为止,这是我想到的: 的HTML 的JavaScript 但是,我不确定这是处理这种情况的正确方法,并且存在一个错误,即我的控件未使用ng-model target字段的值初始化。 这是上面代码的简称:http ://plnkr.co/edit/IvrDbJ 处理此问题的正确方法是什么? 编

  • 问题内容: 我想在3个地方使用相同的HTML模板,只是每次使用不同的模型。我知道我可以从模板访问变量,但是名称会有所不同。 有没有办法将模型传递给ngInclude? 这是我想要实现的,当然add-variable属性现在不起作用。然后,在我包含的模板中,我将访问detailsObject及其属性。 如果我使用ng-include的方法不好,还有其他应该尝试的方法吗? 问题答案: 注意:这不是我的

  • 问题内容: 我正在为jQuery日期选择器插件创建AngularJS指令,当日期选择器日期更改时,该插件应更新ng-model。 这是到目前为止的代码: 考虑到在调用事件时范围,元素,属性,ngModel不可用,如何在“ dp.change”事件中更新ngModel? 谢谢! 问题答案: 可以肯定的是,已添加到angular的任何插件都不会更新angular范围的,我们需要在它的jquery ch

  • 问题内容: 我创建了下面的角度指令, ChildDirective ,在 ParentDirective中使用 这正常工作,并且出现了几个子指令。 我想更新 ParentDirective ,以从服务器获取 childDirective 的列表。因此,我更新了 ParentDirective 代码以进行Ajax调用,然后绘制 ChildDirectives 问题是, childDirectives