当前位置: 首页 > 知识库问答 >
问题:

更改后更新输入字段

杜元明
2023-03-14

我正在尝试用Angular构建一个简单的计算器,如果我想的话,我可以覆盖总数。我有这部分的工作,但当我回去输入一个数字在一个或两个领域的总数没有在该领域的更新。

这是我的jsfiddlehttp://jsfiddle.net/YUza7/2/

形式

<div ng-app>
  <h2>Calculate</h2>

  <div ng-controller="TodoCtrl">
    <form>
        <li>Number 1: <input type="text" ng-model="one">  
        <li>Number 2: <input type="text" ng-model="two">
        <li>Total <input type="text" value="{{total()}}">       
        {{total()}}
    </form>
  </div>
</div>

javascript

function TodoCtrl($scope) {
    $scope.total = function(){
        return $scope.one * $scope.two;
    };
}

共有3个答案

姬泰
2023-03-14

我编写了一个指令,您可以使用它将ng模型绑定到您想要的任何表达式。无论表达式何时更改,模型都将设置为新值。

 module.directive('boundModel', function() {
      return {
        require: 'ngModel',
        link: function(scope, elem, attrs, ngModel) {
          var boundModel$watcher = scope.$watch(attrs.boundModel, function(newValue, oldValue) {
            if(newValue != oldValue) {
              ngModel.$setViewValue(newValue);
              ngModel.$render();
            }
          });

          // When $destroy is fired stop watching the change.
          // If you don't, and you come back on your state
          // you'll have two watcher watching the same properties
          scope.$on('$destroy', function() {
              boundModel$watcher();
          });
        }
    });

您可以在模板中使用它,如下所示:

 <li>Total<input type="text" ng-model="total" bound-model="one * two"></li>      
越景天
2023-03-14

我猜当你在总计字段中输入一个值时,这个值表达式会以某种方式被覆盖。

但是,您可以采取另一种方法:为总值创建一个字段,并在onetwo更改时更新该字段。

<li>Total <input type="text" ng-model="total">{{total}}</li>

并更改javascript:

function TodoCtrl($scope) {
    $scope.$watch('one * two', function (value) {
        $scope.total = value;
    });
}

这里是小提琴的例子。

盛嘉
2023-03-14

您可以向输入字段添加ng change指令。看看docs示例。

 类似资料:
  • 创建一个在PHP服务器端无法理解的小管理员行更新程序。我希望sql查询只更新页面上已更改的$u POST字段,这样它就不会循环所有100条左右的记录。 我的做法如下: 1) jQuery侦听已更改的输入字段,然后为已更新的用户字段分配名称属性 2) PHP检测已设置更新的用户字段。 3) 在提交重新加载时,PHP检测到该输入,并按行ID更新SQL。如何确保PHP知道哪个输入字段指向哪个行ID? j

  • 我尝试使用localStorage保存输入元素的位置。我保存了输入元素的位置,在重新加载页面后,我可以访问它,但在刷新页面后,它始终处于默认位置。(值真/假) HTML: JS: 明确地说,我正在创建chrome扩展(选项页)。 编辑:

  • 每次鼠标左键单击,递增,因此值始终在变化。我想要显示在条目字段,但我无法实现这一点。 如何使输入字段始终更新并在?

  • 我不知道为什么这不起作用 单击该按钮显然会更改道具,但旧的仍在输入中!那么什么给了?我做错了什么?这是虫子吗?有变通办法吗?

  • 问题内容: 在laravel中,我们可以通过获得输入值。我尝试通过这样做来更改值。但是然后,我得到了错误消息“” 。 我们是否可以更改输入值,以便在以后调用时获得新的修改后的值? 谢谢。 问题答案: 您可以用来替换单个项目。 或用于替换整个输入数组。 这是文档的链接

  • 问题内容: 我是AngularJS的新手,我遇到的一个问题是无法解决,在stackoverflow上也有类似的问题,但似乎并没有帮助我。我基本上有一个可以通过ng- click更新的表单,但是一旦我在任何文本框中输入文本,这些文本框就不再更新。 这是我的HTML 这是有人单击链接时调用的我的函数 问题答案: 您的链接需要登录。 如果我不得不猜测您的问题,则可能与角度范围问题有关。尝试将ng-mod