javascript - AngularJS - 使用服务方法的结果更新 DOM

标签 javascript angularjs

我有这个标记:

<div ng-controller="AutoDeployController as autoDeploy">
   <input type="text" ng-model="autoDeploy.message">
   <p>Message: {{ autoDeploy.message }}</p>
</div>

<button ng-click="autoDeploy.change()">change</button>

我的 Controller 中的这个方法:

model = this;

model.change = function(){
    model.message = AutoDeployService.returnOne();
};

我的服务模块中的这个方法:

function returnOne(){
    return "one";
}

当我使用 Chrome 调试它时,我可以看到 model.message 更改为 "one" 并且如果我在文本框中键入,它会更改 model .message 以及带有 model.message 的任何其他字段都会动态更改...那么为什么当我单击按钮时 DOM 不更新呢?

根据我使用按钮创建和添加 DOM 对象的经验,我觉得它可能涉及 $compile 或其他系统变量,但我不确定何时/为何使用系统变量.

最佳答案

问题是您的按钮位于 autoDeploy Controller 之外。使用 Controller 将该按钮移动到 div 内,它将调用更改方法。

<div ng-controller="AutoDeployController as autoDeploy">
   <input type="text" ng-model="autoDeploy.message">
   <p>Message: {{ autoDeploy.message }}</p>
   <button ng-click="autoDeploy.change()">change</button>
</div>

关于javascript - AngularJS - 使用服务方法的结果更新 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167010/

相关文章:

javascript - 为什么在reactjs中使用JSON.parse会导致跨源错误?

javascript - Paypal Express Checkout.js - 将自定义值传递到交易中

javascript - 第一次迭代完成后更改计时器间隔

javascript - 如何在 Angularjs 中将文本绑定(bind)为 DOM 对象

javascript - ng-include 不包括 Angular 中的页面

javascript - 应用类似 ng-repeat 的过滤器,但不使用 ng-repeat

javascript - 为什么我必须将按钮单击事件的 jquery 函数放在 $(document).ready() 中?

javascript - 隐藏最后一个对话框模式上的下一个按钮

javascript - 在AngularJS中使用routeParams创建templateUrl

javascript - 当指令手动替换元素的内容时,ngRepeat 不会删除旧条目