MaterialIn.directive.js
angular.module('mdt')
.directive('mdtMaterialins', materialInsDirective);
function materialInsDirective() {
return {
restrict: 'E',
scope: {
materialoffers: '=',
},
bindToController: true,
templateUrl: 'app/materialOffers/materialIns/materialIns.html',
controllerAs: 'materialInsVm',
controller: MaterialinsController
};
}
function MaterialinsController($scope) {
var vm = this;
console.log(vm); //shows the materialoffers object present
console.log(vm.materialoffers); //show undefined
}
大家好。我做了一个指令并发送了一系列对象" materialoffers",我可以在html页面上访问它工作正常,但是为什么我无法在控制器内访问它,它显示未定义,任何人都可以告诉我一种方法,我可以在控制器内使用该材料,我想得到它的长度,并将其存储在这样的$ scope变量
vm.total=vm.materialoffers.length;
答案 0 :(得分:0)
似乎SharePoint:SPSecurityTrimmedControl
变量可能在$ http调用或类似之后得到它的值,因为它在创建指令时不会立即获得值。 materialoffers
显示变量,因为它在您单击时显示对象的状态(在本例中为vm)。您可以使用浏览器控制台中的以下代码测试此现象:
console.log(vm)
如果你在10秒钟之前点击了该对象,它就不会拥有该属性,但是在10秒后点击它后,你会在那里看到添加的属性。
尝试用以下代码替换您的控制器代码:
var object = {};
object; // logs the object in console, shows an empty object
window.setTimeout(function() {
object.testValue = "test value"
}, 10000) // After 10 seconds, the object will get the property testValue