Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置$scope变量AngularJS_Javascript_Angularjs - Fatal编程技术网

Javascript 设置$scope变量AngularJS

Javascript 设置$scope变量AngularJS,javascript,angularjs,Javascript,Angularjs,因此,我在事件之后向$scope添加变量时遇到了一个问题。 下面是选择框的HTML。基本上,当它被改变时,我需要改变范围 Index.html <select ng-controller="ClientCtrl" ng-model="name" ng-options="v.name for (k, v) in client" ng-change="selectChange(name)"> </select> <h2>{{cName}}</h2>

因此,我在事件之后向$scope添加变量时遇到了一个问题。 下面是选择框的HTML。基本上,当它被改变时,我需要改变范围

Index.html

<select ng-controller="ClientCtrl" ng-model="name" 
ng-options="v.name for (k, v) in client" ng-change="selectChange(name)">
</select>

<h2>{{cName}}</h2>
<p>Age: {{cAge}}</p>
<p>Notes: {{cNotes}}</p>
$scope.selectChange = function(name){
    $scope.cName = name.name;
    $scope.cAge = name.age;
    $scope.cNotes = name.notes;
  };
我尝试了一些方法来设置这些变量。显然上面这个,然后这个:

$scope.selectChange = function(name){
        $scope.cName = name.name;
        $scope.cAge = name.age;
        $scope.cNotes = name.notes;
        $scope.$apply();
  };
我还是不太明白,但我想我应该试试。任何帮助都会很棒,只需要一个指针来告诉我为什么这样做行不通


我可以获取要发布到console.log(cName)的变量;但是当我有{cName}

但没有更多信息时,它不会出现。很难完全调试,但是从我所看到的情况来看,我建议将整个html包装在控制器ClientCtrl中,否则h2和p标记将无法访问它创建的范围

<div ng-controller="ClientCtrl">
  <select ng-model="name" ng-options="v.name for (k, v) in client" ng-change="selectChange(name)">
  </select>

  <h2>{{cName}}</h2>
  <p>Age: {{cAge}}</p>
  <p>Notes: {{cNotes}}</p>
</div>

{{cName}}
年龄:{{cAge}

注:{{cNotes}


希望这有助于发布更多信息或使用plunker

您实际上不必在ng change事件中传入名称,因为您实际上已经在范围中传入了名称。changeEvent可以直接使用$scope.name,而不是将其作为参数传递

ng-change="selectChange()"
js

$scope.selectChange = function(){
    $scope.cName = $scope.name.name;
    and so on.  
};
我建议你给它起一个比名字更好的名字,我想我们谈论的是一个人,所以如果你叫它person,读起来会更容易


由于为控制器创建了作用域,因此您还需要将打印内容包装在您现在的名称所在的同一控制器中,以使其正常工作

好吧,我应用了这个,它修复了很多东西!我肯定应该想到这一点,我在遵循一个我在其他地方找到的变化函数,但现在你说这样做更有意义。这是一个用这个工作的扑克牌。谢谢我在ng视图中有h2和p,上面有ClientCtrl,但我肯定应该在我的问题中描述这一点。我按照您在plunker中所述的方式展示了它,以供澄清,谢谢!答案是@StenMuchow。