如何根据一个值设置两个$ scope变量的值?

时间:2013-11-14 09:02:11

标签: angularjs

我有一个包含两个字段的表单:

<input data-ng-model="pidLower" />
<input data-ng-model="pidUpper" />

我想用一个有智慧的字段替换它:

<input data-ng-model="pid" />

进入:

  • &#34; 1&#34;将$ scope.pidLower设置为1
  • &#34; 100&#34;将$ scop.pidLower设置为100
  • &#34; 1 - 2&#34;将$ scope.pidLower设置为1,将$ scope.pidUpper设置为2
  • &#34; - 99&#34;将$ scope.pidUpper设置为99

有人可以建议我可以在我的控制器中执行此操作吗?我不确定是否 我需要将它放在手表中,或者是否可以通过某种功能完成。

背景:

我在这里使用pidLower和pidUpper:

$scope.isProblemInRange = function (row) {
                return (row.problemId >= $scope.pidLower || $scope.pidLower == null || $scope.pidLower == "") &&
                       (row.problemId < $scope.pidUpper || $scope.pidUpper == null || $scope.pidUpper == "")
        };

1 个答案:

答案 0 :(得分:1)

观察并决定:

$scope.$watch("pid", function(pid) {
    if( pid == null || pid === "" ) {
        $scope.pidLower = null;
        $scope.pidUpper = null;
    }
    else if( pid.indexOf("-") > 0 ) {
        pid = pid.split("-");
        $scope.pidLower = parseInt(pid[0]);
        $scope.pidUpper = parseInt(pid[1]);
    }
    else {
        $scope.pidLower = parseInt(pid);
    }
});

警告:这只是示例代码,它将大致工作,但您的确切用例可能需要进行一些修改。这是我试图证明的$watch原则。