Asp.net web api AngularJS自定义指令工作不正常
我已经创建了一个自定义指令,我想在整个应用程序中使用它来显示ModelState错误(从mvcwebapi抛出),但是这些错误不会显示在自定义指令生成的html片段中,而是显示error div而不显示任何消息。请帮帮我Asp.net web api AngularJS自定义指令工作不正常,asp.net-web-api,angularjs-directive,Asp.net Web Api,Angularjs Directive,我已经创建了一个自定义指令,我想在整个应用程序中使用它来显示ModelState错误(从mvcwebapi抛出),但是这些错误不会显示在自定义指令生成的html片段中,而是显示error div而不显示任何消息。请帮帮我 cmApp.directive("modelError", function () { return { restrict: 'E', replace: true, scope: { errors:
cmApp.directive("modelError", function () {
return {
restrict: 'E',
replace: true,
scope: {
errors: '@'
},
template: '<div class="row">' +
'<br />' +
'<div class="span10">' +
'<div class="alert-error alert" ng-show="errors" ng-switch="errors.length">' +
'<strong>Error!</strong>' +
'<ul ng-switch-default>' +
'<li ng-repeat="error in errors">{{error}}</li>' +
'</ul>' +
'</div>' +
'</div>' +
'</div>',
};
});
我只看到“Error!”div,但没有看到错误消息。在传递属性值之前,不需要进行插值:
<model-error errors="modelErrors"></model-error>
从马厩里:
范围-如果设置为:
true-则将为此指令创建一个新范围。如果
同一元素上的多个指令请求一个新的作用域,只有一个
将创建新的作用域。新的作用域规则不适用于根目录
由于模板的根始终获取新的
范围
{}(对象哈希)-然后创建一个新的“隔离”作用域。这个
“隔离”作用域与正常作用域的不同之处在于它没有
原型继承自父范围。这在以下情况下非常有用:
创建可重用组件,这些组件不应意外读取或删除
修改父范围中的数据。“隔离”作用域接受一个对象
定义从
父范围。这些局部属性对于别名值很有用
用于模板。Locals定义是本地作用域属性的散列,用于
其来源:
@或@attr-将局部作用域属性绑定到DOM的值
属性由于DOM属性是
串。如果未指定属性名,则属性名为
假定与本地名称相同。给定和小部件范围定义:{localName:'@myAttr'},
然后widget作用域属性localName将反映插入的
hello{{name}的值。随着“名称”属性的更改,名称也将更改
小部件范围上的localName属性。该名称是从
父范围(不是组件范围)
=或=attr-在本地范围属性和通过值定义的名称的父范围属性之间设置双向绑定
属性的属性。如果未指定属性名,则属性
假定名称与本地名称相同。给定和定义范围:{
localModel:'=myAttr'},则小部件作用域属性localModel将
在父范围上反映parentModel的值。有什么变化吗
parentModel将反映在localModel和中的任何更改中
localModel将反映在parentModel中
&or&attr-提供在的上下文中执行表达式的方法
父范围。如果未指定属性名,则属性名
假定与本地名称相同。给定和定义范围:{
localFn:'&myAttr'},然后隔离作用域属性localFn将指向
count=count+value表达式的函数包装器。经常
希望通过表达式从隔离范围传递数据
对于父作用域,这可以通过传递本地
将变量名和值放入表达式包装器fn中。例如
如果表达式是increment(amount),那么我们可以指定数量
通过调用localFn作为localFn({amount:22})来获取值
$scope.modelErrors = validationService.getModelErrors(response);
<model-error errors="modelErrors"></model-error>
scope: {
errors: '='
},