0

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

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

我想用一个具有一定智能的领域来代替它:

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

所以输入:

  • "1" 将 $scope.pidLower 设置为 1
  • "100" 将 $scop.pidLower 设置为 100
  • "1 - 2" 会将 $scope.pidLower 设置为 1,将 $scope.pidUpper 设置为 2
  • "- 99" 将 $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 == "")
        };
4

1 回答 1

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我试图证明的原则。

于 2013-11-14T09:08:28.713 回答