javascript - Angular 不直接在 html 上绑定(bind)数据

标签 javascript angularjs angularjs-1.6

我是 Angular 的初学者(版本 1.6.3),我遇到了这个问题:

我有一个名为 prof 的 Controller :

(function () {
    'use strict';

    angular
        .module('app.prof', [])
        .controller('ProfController', ProfController);

    /** @ngInject */
    function ProfController($scope, Data)
    {
        var vm = this;
        vm.documents = Data.documents;
        vm.classes = Data.classes;
    }
})();

这是其关联的模块:

(function () {
    'use strict';

    angular
        .module('app.prof')
        .config(config);

    /** @ngInject */
    function config($stateProvider, $translatePartialLoaderProvider, msApiProvider) {
        // State
        $stateProvider
            .state('app.prof', {
                url    : '/prof',
                views  : {
                    'content@app': {
                        templateUrl: 'app/main/prof/prof.html',
                        controller : 'ProfController as vm'
                    }
                },
                resolve : {
                    Data : function(msApi){
                        return msApi.resolve('data@get');
                    }
                }
            });

        $translatePartialLoaderProvider.addPart('app/main/prof');
        msApiProvider.register('data', ['app/data/prof/prof-data.json']);
    }
})();

这是主要问题:我有这个 html :

<div class="document" ng-repeat="document in vm.documents">
    <ms-card template="'app/custom-directives/prof-card/prof-card.html'"
             ng-model="document"></ms-card>
</div>

它工作得很好,数据已正确绑定(bind)等等,但是当我将直接调用的模板放在页面中而不是通过 <ms-card> 调用它时它不再起作用了! 我试着放一些 console.log()到处都有,但总是说数据未定义;我不明白。 另外,ng-repeat总是工作得很好

编辑:我调用的一些 html:

<md-list-item class="document-item md-white-bg md-2-line" md-ink-ripple>
              <div class="media ml-16">
                <img class="image-apercu" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">
              </div>

ps:当我直接添加 html 时,我不会忘记添加 ng-model="document"但还是不行

这让我很困惑:/

最佳答案

您无法将“vm”对象与“$scope”绑定(bind)。你需要将它与 Scope 绑定(bind),如

function ProfController($scope, Data)
    {
        //$scope.vm = this;

        $scope.vm.documents = Data.documents;
        $scope.vm.classes = Data.classes;
    }

你的 Html 应该是这样的:

<body ng-app="app.prof" ng-controller="ProfController">
    <div class="document" ng-repeat="document in vm.documents">
        <ms-card template="'app/custom-directives/prof-card/prof-card.html'"
                 ng-bind="document"></ms-card>
    </div>
</body>

希望这对你有用

关于javascript - Angular 不直接在 html 上绑定(bind)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43134908/

相关文章:

javascript - 如何在 JavaScript 中读取所选元素的值

javascript - AngularJS 指令隔离范围

javascript - 在表单中按名称查找 `datalist`?

javascript - AngularJS 指令 - 设置多个指令元素的顺序(不是指令的优先级,而是元素的优先级)

javascript - AngularJS 1.6 路由不工作

AngularJS 1.6 版本从 `.success` 方法更改为 `.then` 方法

Javascript onClick 在 Safari 或 Chrome 中不起作用

javascript - 将隐藏的输入绑定(bind)到 Angular 模型

javascript - 在 angularjs 中获取并加载图像

AngularJS URL 中的所有斜杠更改为 %2F