为什么我的AngularJS视图没有更新?

时间:2016-08-06 22:20:35

标签: angularjs d3.js angularjs-directive angularjs-controller

(更新:仍未解决此问题。)

(进一步更新:我没有得到任何人的进一步回复。当然这必须是可以解决的吗?)

我正在组合Angular和D3,我认为这会导致一些问题。我的模型正在更新(console.log告诉我)。并且视图可以看到vm.blueEV在开头应该为0。但观点永远不会更新。

我认为我需要添加$scope.$apply(),所以我做了,但它没有帮助。这是我的相关代码。我错过了什么?

// controller.js

myApp.controller('myController', ['$scope', function($scope) {

  var vm = this;

  vm.blueEV = 0;

  vm.clickState = function(d, i, state) {

    $scope.$apply(function() {

      if (state.classList == "neutral") {
        d3.select(state)
            .classed({"neutral": false, "blue": true});
        vm.blueEV += d.ev;
        vm.unassignedEV -= d.ev;
      };

    });

  };

}]);

// directive.js

return {
    restrict: 'E',
    scope: {
      // val: '=',
      clickState: '&',
    },
    controller: 'myController',
    controllerAs: 'vm',
    bindToController: true,
    link: function(scope, element, attrs) {

      var vm = scope.vm;

      d3.json("public/us-states.json", function(json) {
        svg.selectAll("path")
            .data(json.features)
            .enter()
            .append("path")
            .attr("d", path)
            .attr("class", "neutral")
            .attr("id", "states")
            .on('click', function(d, i) {
              return vm.clickState(d, i, this);
            })
           [etc.]

0 个答案:

没有答案