所以我遇到在事件发生后向$ 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>
Controller.js
$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}}
时,它就不会显示出来答案 0 :(得分:0)
没有更多的信息很难完全调试,但从我可以看到我建议将整个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>
希望这有助于发布更多信息或使用plunker ......
答案 1 :(得分:0)
您实际上不必在ng-change事件中传递名称,因为您实际上已经在范围内具有该名称。 changeEvent可以直接使用$ scope.name,而不是将其作为参数传递。
ng-change="selectChange()"
<强> JS 强>
$scope.selectChange = function(){
$scope.cName = $scope.name.name;
and so on.
};
id建议你给它一个比名字更好的名字,我想是在谈论一个人,所以如果你称之为Person.Name等等会更容易阅读;)
您还需要将您的打印件包装在您现在具有名称的同一控制器中,以使其工作,因为为控制器创建了范围。