Angular 未直接绑定 html 上的数据
Angular not binding data on html directly
我是 Angular(版本 1.6.3)的初学者,我 运行 遇到了这个问题:
我有一个控制器叫教授:
(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>
它工作得很好,数据被正确绑定,但是当我将模板直接调用到页面中而不是通过 <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”绑定。您需要将它与
之类的范围绑定
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>
希望这对你有用
最后我发现自己 - 我把控制器放回原来的样子,我将所有 {{card.something}}
重命名为 {{document.something}}
并且我删除了 [=13] 中的 ng-bind=""
=] 正在循环播放。
我是 Angular(版本 1.6.3)的初学者,我 运行 遇到了这个问题:
我有一个控制器叫教授:
(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>
它工作得很好,数据被正确绑定,但是当我将模板直接调用到页面中而不是通过 <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”绑定。您需要将它与
之类的范围绑定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>
希望这对你有用
最后我发现自己 - 我把控制器放回原来的样子,我将所有 {{card.something}}
重命名为 {{document.something}}
并且我删除了 [=13] 中的 ng-bind=""
=] 正在循环播放。