Angularjs:如何读取指令中的对象
我已将一个对象从控制器传递到指令,但当我在指令中读取对象时,我无法读取,它似乎在指令中对象被读取为字符串。代码如下,我想从对象中读取城市和州Angularjs:如何读取指令中的对象,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我已将一个对象从控制器传递到指令,但当我在指令中读取对象时,我无法读取,它似乎在指令中对象被读取为字符串。代码如下,我想从对象中读取城市和州 Html File <div ng-controller="WeatherController"> <div weather ng-object="{{Object}}"></div> </div> Controller .controller('WeatherController', ['$sc
Html File
<div ng-controller="WeatherController">
<div weather ng-object="{{Object}}"></div>
</div>
Controller
.controller('WeatherController', ['$scope', function ($scope) {
$scope.webpartData.OverviewData.Person.Address.City;
$scope.Object = {
City: '',
State: ''
};
$scope.Object.City = 'TestCity';
$scope.Object.State = 'TestState';
});
})
}])
Directive
angular.module('WeatherModule', [])
.directive('Weather', ["$timeout", function($timeout) {
return {
restrict: 'EA',
template: '<div id="weather"></div>',
scope: {
ngObject: '@ngObject'
},
link: function(scope, element, attrs) {
scope.$watch('ngObject', function(value) {
scope.ngObject = value;
});
$timeout(function() {
console.log('Location' + scope.Object.City + ',' + scope.Object.State);
}, 100);
}
};
}])
Html文件
控制器
.controller('WeatherController',['$scope',函数($scope){
$scope.webpartData.OverviewData.Person.Address.City;
$scope.Object={
城市:'',
状态:“”
};
$scope.Object.City='TestCity';
$scope.Object.State='TestState';
});
})
}])
指示
角度模块('WeatherModule',[])
.directive('Weather',[“$timeout”,函数($timeout){
返回{
限制:“EA”,
模板:“”,
范围:{
ngObject:“@ngObject”
},
链接:函数(范围、元素、属性){
范围$watch('ngObject',函数(值){
scope.ngObject=值;
});
$timeout(函数(){
log('Location'+scope.Object.City+','+scope.Object.State);
}, 100);
}
};
}])
您应该使用“=”而不是“@”。和ng object=“object”而不是ng object=“{{object}”。在引用指令范围成员时,=和&之间存在差异
1. "@" (Text binding / one-way binding)
2. "=" (Direct model binding / two-way binding)
3. "&" (Behaviour binding / Method binding)
@表示控制器作用域的更改将反映在指令作用域中,但如果修改指令作用域中的值,控制器作用域变量将不会受到影响
@始终希望映射的属性是表达式。这很重要,;因为要使“@”前缀起作用,我们需要将属性值包装在{{}中
=是双方向的,因此如果更改指令范围中的变量,控制器范围变量也会受到影响
&用于绑定控制器作用域方法,以便在需要时可以从指令中调用它
在您的情况下,您可能需要使用=
而不是@
看看下面这把小提琴(它不是我的,但它有很好的切中要害的插图)
还有一些相关问题: