Javascript 将作用域传递给AngularJS指令
对于AngularJS指令,我有一个特定的场景:Javascript 将作用域传递给AngularJS指令,javascript,angularjs,Javascript,Angularjs,对于AngularJS指令,我有一个特定的场景: 通常,指令应该继承默认范围 但对于某些特定场景,我想用myValues(从web服务加载的对象)替换$scope.myValues中的所有值 我不能在这个场景中更改主作用域,因为它属于另一个应用程序(或多或少是一个插件机制) 谢谢和问候 Stefan如果我认为我找到了解决方案: 示例Html: 示例指令: app.directive('wiView',function(){ var linkFunction=函数(范围、元素、属性){ if(
- 通常,指令应该继承默认范围
- 但对于某些特定场景,我想用
(从web服务加载的对象)替换myValues
中的所有值$scope.myValues
Stefan如果我认为我找到了解决方案: 示例Html: 示例指令:
app.directive('wiView',function(){
var linkFunction=函数(范围、元素、属性){
if(attrs.layout!==未定义){
scope.layout=angular.fromJson(attrs.layout);
}
};
返回{
限制:“E”,
范围:正确,
优先级:0,
link:linkFunction,
模板:“您好,{layout.property1}}!”
};
})) 您不能简单地在$http web服务成功中设置
$scope.myValues=MyDirective.getNewValues()
?您可以发布一些示例代码来显示您尝试了什么吗?请不要将答案编辑到问题中。@Wex:好的,是的,您是对的,完成了。
<wi-view data-layout="{{passLayout}}"></wi-view>
<hr />
Original property: {{layout.property1}}
app.controller('wiController', function($scope) {
// Simulating the original scope values
$scope.layout = {};
$scope.layout.property1 = 'Original Value';
// New scope values, just here for binding it to the controller
var passLayout = {};
passLayout.property1 = 'Value Overwritten';
passLayout.property2 = 'Another Property';
$scope.passLayout = passLayout;
});
app.directive('wiView', function () {
var linkFunction = function(scope, elems, attrs) {
if (attrs.layout !== undefined) {
scope.layout = angular.fromJson(attrs.layout);
}
};
return {
restrict: "E",
scope: true,
priority: 0,
link: linkFunction,
template: '<div>Hello, {{layout.property1}}!</div>'
};