我有一个文本框,一个HTML页面,我使用的是位AngularJS来显示剩余的字符个数 -AngularJS不使用jQuery显示HTML
<div ng-app="" class="container-fluid">
<form class="form" role="form">
<div class="form-group">
@Html.TextArea("Description", htmlAttributes: new { @class = "form-control", placeholder = "Description, ng_model = "descMessage" })
<div>
<label>{{ 500 - descMessage.length }}</label>
</div>
</div>
</form>
</div>
能正常工作时,我只是显示它作为局部视图。我得到正确的字符数剩余。
@Html.Partial("~/Views/Desc/Index.cshtml")
但是,当我通过JQuery显示它时不起作用。它的字符总是显示为 - {{ 500 - descMessage.length }}
,而不是字符。
var options = {
url: "/Desc/Index",
type: "get",
dataType: "html"
};
$.ajax(options).done(function (data) {
var $target = $("#displayform");
$target.html(data);
});
AngularJS表达应该在这里进行评估。为什么这不会发生?我经历过很多JQuery,但第一次使用AngularJS。我怎样才能解决这个问题?
我真的认为有一个更简单的方法来做到这一点,至于我看来Angular只是失去了绑定,我只需要重新调整它(加载html后可能)。我可以轻松构建一个jQuery计数器,但不希望Angular对我这么好。无论如何,将尝试实施您的解决方案,看看它是否有效。 – Sam 2015-02-08 15:18:45
问题在于Angular不知道值是否已经改变,因为它发生在应用程序范围之外。我刚刚处理了一些类似的问题。您可以通过获取Angular模块的句柄来调用jQuery代码中的更新 - 我看到了一些解决方案,但它们都比使用控制器或指令和纯Angular更复杂。使用熟悉的jQuery代码保存的一点点在将两者结合在一起以处理已绑定到Angular的元素上的DOM“内容”时很快就会丢失。 – 2015-02-08 16:20:51
试过但它不工作。 – Sam 2015-02-08 18:50:56