Javascript 为什么这个函数中的双向绑定在角度上不起作用?

Javascript 为什么这个函数中的双向绑定在角度上不起作用?,javascript,angularjs,scope,this,Javascript,Angularjs,Scope,This,我试图在vm.info从API调用(使用外部库)返回时更改它,然后在我的视图中显示它。但由于某些原因,这并没有更新我的视图,我无法在函数vm.session.service(“ALMemory”).done(函数(ALMemory) 控制器: app.controller('cogController', function () { var vm = this; vm.testFunc = function() { alert('test

我试图在vm.info从API调用(使用外部库)返回时更改它,然后在我的视图中显示它。但由于某些原因,这并没有更新我的视图,我无法在函数
vm.session.service(“ALMemory”).done(函数(ALMemory)

控制器:

app.controller('cogController',
  function () {
        var vm = this;

        vm.testFunc = function() {
          alert('test');
        }
        // Get a response from API call
        vm.session.service("ALMemory").done(function (ALMemory) {
          ALMemory.subscriber("getJSON").done(function (subscriber) {
            subscriber.signal.connect(function (msg) {
              // msg is a Json file (is defined when logging it here)
              vm.info = msg;
              // logging vm.info gives the json file
              vm.testFunc(); // This function is not called
            });
        });
  });
});
现在我的vm.info在我的视图中没有更新

视图:

<body ng-app="cogApp">
 <div class="container" ng-controller="cogController as vm">
  <p>{{vm.info}}</p>
 </div>
</body>

{{vm.info}


调用
$scope.$apply()
设置vm.info后

我认为您应该检查您的服务是否按预期注入和工作

下面是一个将
response.data.body
值设置为
vm.info
的示例,可以正常工作:

angular
.module('cogApp',[])
.controller('cogController',['$http',函数($http){
var vm=这个;
$http
.get('https://jsonplaceholder.typicode.com/posts/1')
.然后(功能(响应){
vm.info=response.data.body;
});
}]);

{{vm.info}


vm.seision.service是否提供错误回调?可能是您在那里遇到了一个错误,导致ALMemory.subscriber永远无法执行。尝试在
vm.info
中设置任何伪
字符串
,看看您是否可以在视图中看到这一点。可能是服务调用失败。其余的代码工作正常。这样就赢了“我们没有必要,因为vm是通过在控制器本身上使用as关键字绑定到作用域的。他正在使用外部库进行绑定。变量vm.info本身在控制器中更新,而不是在外部库中更新。
ALMemory.subscriber(“getJSON”).done
在我看来像是一个外部库,它提供了一个回调函数,该函数是对vm的闭包,因此它在订阅服务器.signal.connect外部更新,也可能是外部的