javascript - $scope.model 属性的配置未定义

标签 javascript angularjs controller umbraco

我正在 Umbraco 7 中实现内容选择器的 Controller ,我需要更改起始节点以匹配特定的内容节点。但是,当我使用内容选择器加载页面时,我收到一条错误消息:

"Cannot read property 'config' of undefined"

关于这段代码:

$scope.model.config.StartNodeId = 1083;
     if ($scope.model.config.StartNodeId) {
          options.startNodeId = $scope.model.config.StartNodeId;
     }

我的整个 Controller :

angular.module("umbraco").controller("UIOMatic.FieldEditors.Pickers.ContentController",
    function ($scope, $routeParams, $http, dialogService, entityResource, iconHelper) {

        function init() {
            if (!$scope.setting) {
                $scope.setting = {};
            }

            var val = parseInt($scope.property.value);

            if (!isNaN(val) && angular.isNumber(val) && val > 0) {
                $scope.showQuery = false;

                entityResource.getById(val, "Document").then(function (item) {
                    item.icon = iconHelper.convertFromLegacyIcon(item.icon);
                    $scope.node = item;
                });
            }

            $scope.openContentPicker = function () {
                var d = dialogService.treePicker({

                    section: "content",
                    treeAlias: "content",
                    multiPicker: false,
                    callback: populate
                });
            };

            $scope.model.config.StartNodeId = 1083;
            if ($scope.model.config.StartNodeId) {
                options.startNodeId = $scope.model.config.StartNodeId;
            }

            $scope.clear = function () {
                $scope.id = undefined;
                $scope.node = undefined;
                $scope.property.value = undefined;
            };

            function populate(item) {
                $scope.clear();
                item.icon = iconHelper.convertFromLegacyIcon(item.icon);
                $scope.node = item;
                $scope.id = item.id;
                $scope.property.value = item.id;
            }
        };

        if ($scope.valuesLoaded) {
            init();
        } else {
            var unsubscribe = $scope.$on('valuesLoaded', function () {
                init();
                unsubscribe();
            });
        }
    });

我尝试将起始节点 ID 更改为 1083,这正是我想要的,并且我可以很好地打开内容选择器,但它不允许我保存更改。它还允许多重选择,我已在配置对象中将其设置为 false。

这是作者提供的内容选择器的文档: http://uiomatic.readthedocs.io/en/stable/02.DefaultEditorViews/#content-picker

最佳答案

我认为您应该在为其对象赋值之前初始化 $scope.model。 使用

$scope.model = {}

关于javascript - $scope.model 属性的配置未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580617/

相关文章:

javascript - 我可以在彼此之上绘制两个形状并具有组合的描边/轮廓吗?

javascript - 如何在 Angular/Meteor 中有条件地显示 ng-repeat 内的按钮

javascript - $resource 无法从 json 获取数组

model - Yii2 在非对象上调用成员函数 field()

javascript - JavaScript 中的函数表达式与声明有什么区别?

javascript - 如何在 chrome 开发工具中使用对象扩展语法

javascript - 使用 d3 而不是 jQuery 来处理表单输入会导致重新加载 "/"

javascript - 在 Angular JS 中,模型值的变化没有反射(reflect)在指令的模板中

javascript - tableToExcel 在 IE 和 Firefox 中不起作用

java - 如何在Spring-MVC方法中绑定(bind)抽象类的子类?