我想呈現像這樣的東西:NG-INIT剃刀表達
<thead ng-init="isDoctor = @(User.IsInRole("Doctor"))">
我希望它是「isDoctor =真|假」(我的服務器端代碼呈現此模板返回PartialView)順便說一句,我總是得到一個錯誤,如:語法錯誤:令牌'未定義'不是表達式[isDoctor =]在[isDoctor =在Error()]的列null的主要表達式。那麼,這是什麼原因呢?
我想呈現像這樣的東西:NG-INIT剃刀表達
<thead ng-init="isDoctor = @(User.IsInRole("Doctor"))">
我希望它是「isDoctor =真|假」(我的服務器端代碼呈現此模板返回PartialView)順便說一句,我總是得到一個錯誤,如:語法錯誤:令牌'未定義'不是表達式[isDoctor =]在[isDoctor =在Error()]的列null的主要表達式。那麼,這是什麼原因呢?
試試這樣:
<thead ng-init="isDoctor = @(User.IsInRole("Doctor") ? "true" : "false")">
因爲C#布爾資本的第一個字母呈現:
<thead ng-init="isDoctor = True|False">
並True
或False
未定義
或者,你可以考慮以下幾點:
<script type='text/javascript'>
angular.module('my-module')
.value('isDoctor', @(User.IsInRole("Doctor") ? "true" : "false"))
// perhaps other values that need passed in from the server?
.constant('aValue', '@Model.AValue') // for example
;
</script>
這不會將值直接放在ng-init
之類的範圍內;然而,它給你注射的價值,你可以在你的控制器,服務指令等就是有效,運行時配置變量使用:
// some script somewhere
angular.module('my-module').controller('myController', [
'$scope',
'isDoctor',
function($scope, isDoctor) {
$scope.isDoctor = isDoctor;
// other controller code here
}]);
這種樣式傳遞數據的好的部分從Razor到Angular是,如果你忘記這麼做,Angular的依賴注入會產生錯誤,因爲實例化myController
需要定義isDoctor
。它將潛在的運行時錯誤移動到一個很難找到的配置/編譯錯誤中,該錯誤應該相對容易糾正。
它還爲您提供了一個位於您的Razor(cshtml)文件中的服務器端參數傳遞到Angular運行時的方式,這種方式不那麼麻煩,特別是如果您的HTML標記有很多指令和插值。
很好,它的工作原理。該死的,大寫的白癡錯誤。謝謝! – starbeast
@starbeast歡迎您)) – karaxuna