AngularJS: Wie soll ich update-eine Eigenschaft auf einer gelöst Versprechen im inneren meiner Uhr listener?

Betrachten diese Plunkr.

Im inneren meiner Uhr Zuhörer, ich möchte ein update-Eigenschaft auf eine gelöst Versprechen.

  • Ist es richtig, ändern die Werte auf die $$v Eigenschaft?
  • Wenn nicht, dann was soll ich tun?

Hier ist der HTML:

<!DOCTYPE html>
<html id="ng-app" ng-app="myAngularApp">

  <head>
    <script data-require="angular.js@*" data-semver="1.2.0-rc2" src="http://code.angularjs.org/1.2.0-rc.2/angular.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-controller="MyController">
    <input ng-model="myDto.Weight" />{{myDto.Status}}
  </body>

</html>

Hier ist das JavaScript:

var myDto = {Weight: 200, Status: 'Acceptable'};

var myAngularApp = angular.module('myAngularApp', []);

myAngularApp.factory('myService', function($q){
  return {
    getMyDto: function(){
      var deferred = $q.defer();
      deferred.resolve(myDto);
      return deferred.promise;
    }
  };
});

myAngularApp.controller('MyController', function MyController($scope, myService){
  $scope.myDto = myService.getMyDto();
  $scope.$watch('myDto.Weight', function(newVal, oldVal){
    if (newVal < 150) {
      $scope.myDto.$$v.Status = 'Too Light!'; //Is this the recommended way of doing it?
    }
    else if (500 < newVal) {
      $scope.myDto.$$v.Status = 'Too Heavy!';
    }
    else if (Number(newVal)) {
      $scope.myDto.$$v.Status = 'Acceptable';
    }
    else {
      $scope.myDto.$$v.Status = 'Not a number!';
    }
  });
});
  • Die anderen, Antworten machen einen guten job der Beantwortung dieser spezifischen Frage; es sollte jedoch darauf hingewiesen werden, dass eine variable oder Eigenschaft in Eckige vorangestellt $$ ist eine private variable und sollte nicht geändert werden, oder Sie abhängt.
  • Ich vermutete, so viel, aber ich fühle mich wie der AngularJS Dokumentation nennen soll dies ausdrücklich irgendwo, und die Leute sagen, was zu tun ist, anstatt.
InformationsquelleAutor Jim G. | 2013-09-07
Schreibe einen Kommentar