首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更改应更改指令内容的自定义指令属性值。

动态更改应更改指令内容的自定义指令属性值。
EN

Stack Overflow用户
提问于 2016-10-07 12:52:52
回答 1查看 1.1K关注 0票数 0

基本上,我做了自定义指令,将Url作为字符串传递给它,然后在指令控制器中调用http.get()方法,该方法在该指令中创建内容。我想要的是能够更改annotation-url属性值,作为回报,它将改变指令中的内容,因为新的JSON将返回不同的JSON对象。但是,当我从控制器中更改annotationData时,该指令似乎不会被刷新。

HTML

代码语言:javascript
复制
<span ng-click="annotatonData = 'data/annotations1.json'">John</span>

 <span ng-click="annotatonData = 'data/annotations2.json'">Marry</span>

    <ng-annotate user-options="user" annotation-url="{{annotatonData}}"></ng-annotate>

主计长:

代码语言:javascript
复制
app.controller('ngAnnotationsController', ['$scope', '$http', function ($scope, $http) {

    //InIt default http get

    $scope.annotatonData = 'data/annotations1.json';

}]);

指令:

代码语言:javascript
复制
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;
                 ...
                 ...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-07 13:07:00

首先,我建议你换到

代码语言:javascript
复制
scope: {
    annotationUrl: "="
}

当值被更改时,您可以添加一个观察者来调用$http

代码语言:javascript
复制
$scope.$watch('annotationUrl', function(newVal, oldVal) {
    if (newVal != oldVal) {
       $http.get(newVal).then(function (response) {
            $scope.data = response.data;
             ...
             ...
    }
}

但是,如果您想保持annotationUrl的原样,则需要使用$attr.$observe('annotationUrl', fn)来捕获值更改。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39917791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档