Javascript 安格拉斯通过范围?

Javascript 安格拉斯通过范围?,javascript,html,angularjs,Javascript,Html,Angularjs,实际上,我不确定问题的标题应该是什么,因为我不清楚我遗漏了什么 我把这归结为一个非常简单的例子(实际情况更复杂)。我有一个文本框和ng开关内的按钮。我读过,这个开关创建了它自己的局部作用域 单击按钮时,我要做的是将文本框的值传递给函数。在函数中,我将对值执行需要执行的操作,然后清除文本框。我正在努力找到正确的方法来做这件事 控制器代码: $scope.temp = 1; $scope.tempCall = function (tempModel) { tempModel = ""; /

实际上,我不确定问题的标题应该是什么,因为我不清楚我遗漏了什么

我把这归结为一个非常简单的例子(实际情况更复杂)。我有一个文本框和ng开关内的按钮。我读过,这个开关创建了它自己的局部作用域

单击按钮时,我要做的是将文本框的值传递给函数。在函数中,我将对值执行需要执行的操作,然后清除文本框。我正在努力找到正确的方法来做这件事

控制器代码:

$scope.temp = 1;

$scope.tempCall = function (tempModel) {
    tempModel = ""; //this doesn't work
    $scope.tempModel = ""; //nor does this
};
HTML/模板:

<div ng-switch on="temp">
    <div ng-switch-when="1">
        <input ng-model="tempModel" />
        <input type="button" ng-click="tempCall(tempModel)" />
    </div>
    <div ng-switch-when="2">TWO</div>
</div>

两个

我相信我实际上可以从父范围或根范围遍历范围并清除值,但这“感觉”不正确。清除此值的正确(角度)方法是什么?

这里有一种方法:

<input type="button" ng-click="tempCall(tempModel);tempModel='';" />
然后,您将能够通过以下方式清除该值:

$scope.tempCall = function (tempModel) {
    tempModel.value = "";
};


为了防止数据绑定问题,“经验法则是,如果使用ng模型,必须在某处有一个点。”Miško Hevery

这里有一种方法:

<input type="button" ng-click="tempCall(tempModel);tempModel='';" />
然后,您将能够通过以下方式清除该值:

$scope.tempCall = function (tempModel) {
    tempModel.value = "";
};


为了防止数据绑定问题,“经验法则是,如果使用ng模型,必须在某处有一个点。”Miško Hevery

当您使用角度范围中的基本值时,不能从子范围覆盖父范围中的值。这是因为angular使用javascript原型继承

在这种情况下,您可以在父范围中创建一个对象,然后在子范围中更新该对象的值。因为您没有覆盖对象(仅附着到对象的特性),所以参照可以工作

我在plunk上创建了一个演示,你可以

$scope.temp=1;
$scope.tempModel={};
$scope.tempCall=函数(){
$scope.tempModel.previous=$scope.tempModel.value
$scope.tempModel.value=“”;
};
{{tempModel.previous}
两个

在角度范围内使用基本值时,不能从子范围覆盖父范围内的值。这是因为angular使用javascript原型继承

在这种情况下,您可以在父范围中创建一个对象,然后在子范围中更新该对象的值。因为您没有覆盖对象(仅附着到对象的特性),所以参照可以工作

我在plunk上创建了一个演示,你可以

$scope.temp=1;
$scope.tempModel={};
$scope.tempCall=函数(){
$scope.tempModel.previous=$scope.tempModel.value
$scope.tempModel.value=“”;
};
{{tempModel.previous}
两个

您可以创建一个文本框吗?使用jquery清除文本框还是简单地设置clear tempModel?记住获取值1stCoull您可以创建一个吗?使用jquery清除文本框还是简单地设置clear tempModel记住获取值1stHanks和+1。Derek的答案,包括物体,在早些时候得到了,所以我接受他的答案。谢谢和+1。Derek的答案包括了物体,我早就收到了,所以我接受了他的答案。
$scope.temp = 1;
$scope.tempModel = {};

$scope.tempCall = function () {
  $scope.tempModel.previous = $scope.tempModel.value
  $scope.tempModel.value = "";
};

<div ng-switch on="temp">
  <div ng-switch-when="1">
      <input ng-model="tempModel.value" />
      <input type="button" ng-click="tempCall()" />
      {{tempModel.previous}}
  </div>
  <div ng-switch-when="2">TWO</div>