Angularjs 动态更改应更改指令内容的自定义指令属性值
基本上,我已经制定了自定义指令,将Url作为字符串传递给该指令,然后在我调用的指令控制器中调用Angularjs 动态更改应更改指令内容的自定义指令属性值,angularjs,Angularjs,基本上,我已经制定了自定义指令,将Url作为字符串传递给该指令,然后在我调用的指令控制器中调用http.get()方法,该方法在该指令中创建内容。我想要的是能够更改annotation url属性的值,该属性反过来将更改指令内的内容,因为新url将返回不同的JSON对象。但是,当我从控制器更改annotationData时,该指令似乎没有得到刷新 HTML 指令: app.directive('ngAnnotate', function () { return { tem
http.get()
方法,该方法在该指令中创建内容。我想要的是能够更改annotation url
属性的值,该属性反过来将更改指令内的内容,因为新url将返回不同的JSON
对象。但是,当我从控制器更改annotationData
时,该指令似乎没有得到刷新
HTML
指令:
app.directive('ngAnnotate', function () {
return {
templateUrl: 'templates/...',
restrict: 'E',
scope: {
annotationUrl: "@"
},
controller: ['$scope', '$http', function ($scope, $http) {
$http.get($scope.annotationUrl).then(function (response) {
$scope.data = response.data;
...
...
首先,我建议你换成
scope: {
annotationUrl: "="
}
您可以添加一个监视程序,以便在值更改时调用$http
$scope.$watch('annotationUrl', function(newVal, oldVal) {
if (newVal != oldVal) {
$http.get(newVal).then(function (response) {
$scope.data = response.data;
...
...
}
}
但是,如果希望保持注释URL
的原样,则需要使用
$attr.$observe('annotationUrl',fn)
捕获值更改。首先,我建议您更改为
scope: {
annotationUrl: "="
}
您可以添加一个监视程序,以便在值更改时调用$http
$scope.$watch('annotationUrl', function(newVal, oldVal) {
if (newVal != oldVal) {
$http.get(newVal).then(function (response) {
$scope.data = response.data;
...
...
}
}
但是,如果希望保持注释URL
的原样,则需要使用
$attr.$observe('annotationUrl',fn)
捕获值更改。首先,如果我将其更改为“=”,我必须传递对象而不是字符串,并删除http get并播放传递的对象。现在我想使用表示字符串URL的字符串。感谢您的回答,我将检查此属性。将observechange更改为=
只需要您的模板更改注释url=“annotatonData”
您仍然可以在您的指令中访问$scope.annotationUrl
,感谢它工作正常,所以基本上我将所有内容都封装在InIt函数中,我在手表中调用它,并使用新值passed首先,如果我将其更改为“=”,我将必须传递对象而不是字符串,并删除http get并使用传递的对象。现在我想使用表示字符串URL的字符串。感谢您的回答,我将检查此属性。将observechange更改为=
只需要您的模板更改注释url=“annotatonData”
您仍然可以在您的指令中访问$scope.annotationUrl
,感谢它工作正常,所以基本上我将所有内容都包装在InIt函数中,我在手表中调用它,并传递新值