即使我能看到它的内容,我也无法访问对象的属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了即使我能看到它的内容,我也无法访问对象的属性相关的知识,希望对你有一定的参考价值。

当我使用bootstrap的下拉菜单时,这段代码工作得很好..现在我切换到常规我不知道为什么我会遇到这个问题。为什么我不能访问属性?让我疯了

html

    <select class="form-control" ng-model="client" ng-change="clientSelect(client)">
        <option value="">--- Please Select ---</option>
        <option ng-repeat="client in clientList" value="{{client}}">{{client.clientName}}</option>
    </select>

角/ javascript

$scope.clientSelect = function (client) {
  console.log(client);
  console.log(client.clientName);  //is undefined
  console.log(client.clientId);  //is undefined
}

输出:

{"clientId":102,"clientName":"Testing"}  //i clearly see the properties here...
UsersController.js:130 undefined
UsersController.js:131 undefined

编辑:当我console.log($ scope.clientList)它没关系..数组中第一项的对象如下所示:

0:Object $$ hashKey:“object:254”clientId:102 clientName:“Testing”_proto:Object

答案

你无法访问属性,因为你从ng-repeat获得的client是一个string

检查我使用您的代码创建的Plunker的控制台日志。你会看到第一个consol.log(client)实际上是这个字符串:{"clientId":102,"clientName":"Testing 1"}。因此,它没有任何属性。

来自select docs

请注意,在没有ngOptions的情况下使用的select指令的值始终是一个字符串。当模型需要绑定到非字符串值时,您必须使用指令明确地转换它(请参阅下面的示例)或使用ngOptions指定选项集。这是因为选项元素目前只能绑定到字符串值。

考虑使用ngOptions指令而不是<select>和ng-repeat。

以上是关于即使我能看到它的内容,我也无法访问对象的属性的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Handlebars 中的数组访问对象属性

即使它打印在 console.log 中,我也无法映射对象数组

AngularJS:为啥即使显示正确,我也会得到 NaN?

无法从 Vuex [Quasar] 访问商店

Mongoose - 无法访问对象属性?

即使我将其导出为 TypeScript 中自己的类型,也无法访问子类属性