我想要做類似的東西(在我的html):如何嵌套角度表達式?
{{ Customer.Name }}
時Customer.Name是
"{{ Customer.FirstName + ' ' + Customer.LastName }}"
我怎樣才能做到這一點? Customer.Name -String是從服務器讀取的動態配置。我想在我的應用程序的幾個地方做到這一點,所以我不想要一個靜態的代碼隱藏功能,爲我做到這一點。
我想要的只是Angular遞歸地評估表達式。
我想要做類似的東西(在我的html):如何嵌套角度表達式?
{{ Customer.Name }}
時Customer.Name是
"{{ Customer.FirstName + ' ' + Customer.LastName }}"
我怎樣才能做到這一點? Customer.Name -String是從服務器讀取的動態配置。我想在我的應用程序的幾個地方做到這一點,所以我不想要一個靜態的代碼隱藏功能,爲我做到這一點。
我想要的只是Angular遞歸地評估表達式。
您可以使用該方法$eval
()的$scope
實現這一目標。
例如,您的控制器將定義你的客戶對象是這樣的:
function TestCtrl ($scope) {
$scope.customer = {
firstname : 'Darth',
lastname : 'Vader',
name : 'customer.firstname + " " + customer.lastname'
};
$scope.ev = $scope.$eval;
}
然後在您的視圖中,您可以使用配置字符串是這樣的:
<h1 ng-controller="TestCtrl">Hello {{$eval(customer.name)}}!</h1>
它重要的是你的customer.name
屬性不包含大括號!
看到這個plunkr爲一個工作的例子:http://plnkr.co/edit/r524cP6OAOBBzDReLNw4?p=preview
謝謝。這至少是一個更通用的方式來做到這一點。唯一「醜陋」的事情是我的字符串必須已經是一個表達式。感謝這對我來說是一個很好的解決方法。儘管如此,我更喜歡大括號的遞歸評估。會讓生活變得更容易! – NoRyb
有2種方法可以做到這一點。
創建一個使用客戶對象並連接First和Lastname的指令。
angular.module('customer.directives',[]).
.directive('customerName', function() {
restrict : 'EA', // both element and attr will work in case you are using a customer directive
replace : true,
scope : {
Customer : '='
},
template : '{{Customer.FirstName}} {{Customer.Lastname}}'
});
調用示例:
<div ng-repeat="Customer in Customers">
<customer-name='Customer'></customer-name>
</div>
或者你可以使用裏面的CustomerService一個函數來發送你的控制器的全名已經連接在一起。
例:
angular.module('Customer.Services', [])
.factory('CustomerService', function(){
return {
/* other methods here */
getFullName : function(Customer) {
return Customer.FirstName + ' ' + Customer.LastName
}
}
});
angular.module('Customer.Controllers', [])
.controller('CustomerController', function($scope.CustomerService) {
$scope.service = CustomerService.query();
$scope.getFullName = fucntion(customer) {
return CustomerService.getFullName(customer);
}
}
)
裏調用:
<div ng-repeat="Customer in Customers">
{{getFullName(Customer)}}
</div>
謝謝你的回答。這對我來說不夠通用。我無法將我的配置更改爲顯示Customer.Birthday。我必須創建一個指令和/或一個函數才能做到這一點。我更喜歡Nikolas的解決方法。 – NoRyb
有沒有一般的方法來做到這一點。你需要某種輔助函數(例如指令,過濾器)。 – Yoshi