AngularJS ng-model中的奇怪行为

时间:2015-10-02 18:34:45

标签: javascript angularjs

我正在使用ng-bind-html函数生成输入字段,用于编辑存储在应用程序数据库中的文本。我正在使用$sce并允许unsafe-html作为输入,如果没有这样做就不会显示。

生成的HTML如下所示:

<input class="edit-db" 
       ng-model="db[index-1].values[0][0].value" 
       type="text" placeholder="Enter your answer...">

这将生成一个输入字段,但该值将为空。 (而不是db[index-1].values[0][0].value

的值

但是,如果我复制生成的HTML并手动将其放入我的应用程序(不使用ng-bind-html生成它),则会显示该值。这告诉我生成的代码没有问题。

这是AngularJS的错误,还是我做错了什么。考虑输入是否手动添加到页面,值出现我假设某处有错误。

对于会询问“为什么不只是在页面中手动输入字段”的用户 - 这是因为输入量是动态的,并且会根据存在的值的数量而变化。

3 个答案:

答案 0 :(得分:0)

你可以尝试

ng-model="{{db[index-1].values[0][0].value}}"

我是Angular的初学者,但希望这有效!

答案 1 :(得分:0)

好的,问题是angularjs不知道这个元素。因此,此元素必须通过 $ compile 阶段才能知道它具有ngModel属性。

post中的答案可以帮助您解决问题

答案 2 :(得分:0)

这是否在ng-repeat中?

如果它应该看起来像这样的东西。

<div ng-repeat= "item in items"> <input class="edit-db" ng-model="item.db[index-1].values[0][0].value" type="text" placeholder="Enter your answer..."> <div>'=

您需要通过添加项目让ng-repeat知道这是与items数组中该项相关联的值。在你的模型变量前面。

还要确保包含ngSanitze模块依赖项。您需要包含angular-sanitize.js并将其注入您的app模块。