我有这样的HTML代码:
<div ng-controller="MainCtrl">
<tr data-ng-repeat="element in awesomeThings">
<div ng-if="$even">
<td ng-click="getServiceDetails(element)">
<a href="#">
{{element['serviceDetail']['name']}}
</a>
</td>
</div>
</tr>
//after some html
<span >{{publicName}}</span>
</div>
我的控制器看起来像这样:
angular.module('dcWithAngularApp')
.controller('MainCtrl', function ($scope,$http,test) {
$scope.awesomeThings = {"serviceDetail":{"name":"batman"}}
$scope.getServiceDetails = function(serviceDetails)
{
console.log('Called')
$scope.publicName = serviceDetails.name
}
});
点击td
标记后,span
文字没有变化!即使我改变了当前范围内的publicName
!
我犯错误的地方?
答案 0 :(得分:1)
您的name
$scope.awesomeThings
中没有array
财产。
我在这里为你添加了一些动物。
angular.module('dcWithAngularApp')
.controller('MainCtrl', function ($scope,$http,test) {
$scope.awesomeThings = [
{ name: "Dog" },
{ name: "Cat" }
];
$scope.getServiceDetails = function(serviceDetails)
{
console.log('Called')
$scope.publicName = serviceDetails.name
}
});
编辑:
我整理了一个解决你的编辑的 JSFiddle 。
答案 1 :(得分:0)
$ scope.awesomeThings是一个字符串数组,因此元素没有&#39;名称&#39;属性。
你也失踪了;在您的console.log之后,这可能会阻止代码运行。
它可以帮助您记录对象是什么。
<div ng-controller="MainCtrl">
<tr data-ng-repeat="element in awesomeThings">
<div ng-if="$even">
<td ng-click="getServiceDetails(element)">
<a href="#">
{{element.name}}
</a>
</td>
</div>
</tr>
//after some html
<span >{{publicName}}</span>
</div>
angular.module('dcWithAngularApp')
.controller('MainCtrl', function ($scope,$http,test) {
$scope.awesomeThings = {"serviceDetail":{"name":"batman"}};
$scope.getServiceDetails = function(serviceDetails)
{
console.log(serviceDetails);
$scope.publicName = serviceDetails.name;
}
});
答案 2 :(得分:-1)
您的主要问题是:
$scope.publicName = serviceDetails.name
需要
$scope.publicName = serviceDetails;
$ scope.awesomeThings是一个字符串数组,而不是对象。您通过字符串数组重复并将字符串传递给getServiceDetails方法,因此&#39; serviceDetails&#39;只是一个字符串。
作为一个无关的警告,我看到你在div中使用了tr。 tr应该在table,thead或tbody中。