Angularjs 角度:计算传递到组件属性的表达式
如何将角度表达式的值传递给组件的属性?我正在从API获取值 app.controller.jsAngularjs 角度:计算传递到组件属性的表达式,angularjs,components,Angularjs,Components,如何将角度表达式的值传递给组件的属性?我正在从API获取值 app.controller.js $http.get(apiUrl).then(function(resp) { $scope.name = resp.data.name; }) ... export const Person = { templateUrl: 'person.html', bindings: { firstName: '@' }, controller: function() {
$http.get(apiUrl).then(function(resp) {
$scope.name = resp.data.name;
})
...
export const Person = {
templateUrl: 'person.html',
bindings: {
firstName: '@'
},
controller: function() {
console.log(this.firstName);
}
}
person.component.js
$http.get(apiUrl).then(function(resp) {
$scope.name = resp.data.name;
})
...
export const Person = {
templateUrl: 'person.html',
bindings: {
firstName: '@'
},
controller: function() {
console.log(this.firstName);
}
}
app.html
...
<person first-name="name">
。。。
出于某种原因,它没有计算name
,而是在控制台中记录undefined
有没有办法让它将Tom
记录在控制器内
感谢您的帮助。提前谢谢
我已经设置了一个JSFIDLE
&
用于表达式,@
用于插值字符串,所以请尝试使用
firstName: '&'
然后this.firstName()
应该计算传入的表达式
另外,firstName
在$onInit
之前不保证已初始化,因此如果您这样做
bindings: {
firstName: '&'
},
controller: function() {
this.$onInit = function() {
console.log(this.firstName());
}
}
你应该得到你期望的结果
供参考:
$onInit()
-在构建元素上的所有控制器并初始化其绑定后,对每个控制器调用
编辑:
在提供了额外的信息之后,您可能应该使用单向绑定(
我应该解释一下,我是从API获取数据的,所以加载时不容易获得。我已经设置了一个jsFiddle@realph如果它只是一个变量而不是一个表达式,那么你可以使用一个单向的@realph我在回答中分叉了你的jsFiddle来显示一种方法。