我没有什么问题,花了我几个小时才找到解决方案, 我有一个JSON,它返回我的页面名称+一些关于它的信息我将它传递给指令并且一切正常工作,直到我试图将另一个范围添加到指令显示那些项目形式JSON,项目形式json像往常一样显示但是第二个范围与我的网页的网址不是。我究竟做错了什么?
在角度控制器中SELECT
`vehicle_type`,
`num_passengers`,
sum(if(`in_accident`,1,0)) as `num_accidents`,
count(*) as `num_in_group`,
sum(if(`in_accident`,1,0)) / count(*) as `percent_accidents`
FROM `accidents`
GROUP BY `vehicle_type`,
`num_passengers`
ORDER BY sum(if(`in_accident`,1,0)) / count(*)
ANGULAR DIRECTIVE
pageURL = 'blabla.com';
$scope.pageURL = pageURL;
HTML
}).directive('itsearchresult', function() {
return {
restrict: 'AEC',
scope: {
result: '=result',
pageURL: '@pageURL'
},
templateUrl: 'SearchResults.html'
};
})
searchResults.html
<itsearchresult result="result" pageURL="pageURL"></itsearchresult>
link - &gt; {{pageURL}}&lt; - 这件小艺术作品&#39;没有显示:(
请帮助我,我今天真的不想挂起自己。
答案 0 :(得分:1)
尝试这样..对于创建自定义指令,camel case是最佳实践。
AngularJS规范化元素的标记和属性名称,以确定哪些元素与哪些指令匹配。我们通常通过其区分大小写的camelCase规范化名称(例如ngModel)来引用指令。但是,由于HTML不区分大小写,我们通过小写形式引用DOM中的指令,通常使用DOM元素上的划线分隔属性(例如ng-model)。
directive('itsearchresult', function() {
return {
restrict: 'AEC',
scope: {
result: '=result',
pageUrl: '@pageUrl'
},
templateUrl: 'SearchResults.html'
};
<itsearchresult result="result" page-url="{{pageURL}}"></itsearchresult>
答案 1 :(得分:1)
好吧,既然你没有对你的指令做任何事情,你应该删除该指令的范围并让它使用父范围。
}).directive('itsearchresult', function() {
return {
restrict: 'AEC',
templateUrl: 'SearchResults.html'
};
})
<itsearchresult></itsearchresult>
现在所有的调用都必须在你的控制器范围内
<h3 ng-if='result.nameWP == undefined'> <a href="{{pageURL}}{{result.name}}">
{{result.name}}</a></h3>
<h3 > <a href="{{pageURL}}{{result.postID}}">{{result.nameWP}}</a></h3>
...{{result.content}}...
快速解决方案是重命名page-url key
<itsearchresult result="result" page-url="pageURL"></itsearchresult>
并在你的指令中
}).directive('itsearchresult', function() {
return {
restrict: 'AEC',
scope: {
result: '=result',
pageUrl: '@pageUrl'
},
templateUrl: 'SearchResults.html'
};
})