【发布时间】:2016-04-01 06:26:45
【问题描述】:
我在一些基本的角度数据绑定方面遇到了问题。
我的看法:
<select
ng-model="selectedPerson"
ng-options="person.name for person in testdataset"
ng-change="personChanged(selectedPerson)">
<option value="">All Persons</option>
</select>
我的控制器:
$scope.testdataset = [
{name:"bill"},
{name:"bob"},
{name:"batman"}
];
$scope.personChanged = function(person) {
console.log(person);
}
这很好用——记录了所选的名称。
但这只是在选择名称时打印“未定义”
查看:
<select
ng-model="selectedPerson"
ng-options="person.name for person in testdataset"
ng-change="personChanged()">
<option value="">All Persons</option>
</select>
控制器:
$scope.testdataset = [
{name:"bill"},
{name:"bob"},
{name:"batman"}
];
$scope.personChanged = function() {
console.log($scope.selectedPerson);
}
我是 Angular 的新手,我只是感到困惑。我假设它与函数内部 $scope 的“范围”有关,但我不确定如何排除故障......
【问题讨论】:
-
我无法重现该问题,一切对我来说都很好。可以发fiddle吗?
-
你的代码没有问题,看这里:plnkr.co/edit/RvoF69SjWmqVKtyGO8PD
-
您是否有涉及包装 select 或 select 祖先的隔离作用域的指令?
-
谢谢所有,我从 plunker @francisco 看到,前提是我显然有好的代码。我应该在发布之前先尝试一下:(它必须是范围。当然,我需要一点时间来将代码剥离到我可以在这里展示的东西。我现在正在努力,并将更新完整的例子。很可能只是这样做会使答案显而易见。
-
仍然很好奇它在 @francisco.preller 示例中是如何工作的,但对我来说,它开始将 selectedPerson 包装到对象中,如下所述:github.com/angular-ui/…
标签: javascript angularjs