Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery val更新$scope_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 使用jquery val更新$scope

Javascript 使用jquery val更新$scope,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我目前正在开发一个jQuery应用程序,并试图逐步将其改为angularJS。我不想更改所有现有的jQuery代码。 jQuery代码进行ajax调用,并根据ajax结果更新变量。 我需要这个结果在我的角度范围内。 我试图创建一个隐藏的输入,或者使用display none创建输入,并使用jQuery$('#accountId').val(值)更新它: 但是我的$scope变量$scope.account.accountId没有得到更新 我还尝试了ng值、jquery触发器输入 谢谢正如其他

我目前正在开发一个jQuery应用程序,并试图逐步将其改为angularJS。我不想更改所有现有的jQuery代码。 jQuery代码进行ajax调用,并根据ajax结果更新变量。 我需要这个结果在我的角度范围内。 我试图创建一个隐藏的输入,或者使用display none创建输入,并使用jQuery$('#accountId').val(值)更新它:


但是我的$scope变量$scope.account.accountId没有得到更新

我还尝试了ng值、jquery触发器输入


谢谢

正如其他人所说,这并不理想。然而,只要代码保持模块化,问题就不会太大。尝试创建一个服务来管理jQueryAjax请求,然后将该服务作为依赖项注入控制器中

一个简单的示例可能如下所示:

angular.module('app', [])

  // jQuery managed ajax service
  .service('AccountSvc', function() {
    var BASE_URL = '/accounts';

    this.getAccount = function(id) {

      // I'm assuming this returns a promise
      // haven't worked with jQuery for a while
      return $.get(BASE_URL + '/' + id);
    };

  })

  .controller('AccountsCtrl', function($scope, AccountSvc) {

    AccountSvc.get(123).then(function(account) {
      $scope.account = account;
    });

  });

我认为这是个坏主意。看这里:由于角度的工作方式,这个概念实际上是倒退的。由于angular在document.ready之后管理DOM的方式,您不会慢慢地将angular集成到jQuery页面中而不会出现很多问题。将不得不使用大量的
$apply()
也应该使用角度形式验证和ng消息,而不是是的,这是真的。我已经开始用angularJS重写整个现有的jQuery代码,它更干净、更快。我想我会在这里为ajax部分做同样的事情。
angular.module('app', [])

  // jQuery managed ajax service
  .service('AccountSvc', function() {
    var BASE_URL = '/accounts';

    this.getAccount = function(id) {

      // I'm assuming this returns a promise
      // haven't worked with jQuery for a while
      return $.get(BASE_URL + '/' + id);
    };

  })

  .controller('AccountsCtrl', function($scope, AccountSvc) {

    AccountSvc.get(123).then(function(account) {
      $scope.account = account;
    });

  });