Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么指令之间的作用域不连接?_Javascript_Jquery_Html_Angularjs_Drop Down Menu - Fatal编程技术网

Javascript 为什么指令之间的作用域不连接?

Javascript 为什么指令之间的作用域不连接?,javascript,jquery,html,angularjs,drop-down-menu,Javascript,Jquery,Html,Angularjs,Drop Down Menu,我有关于下拉列表的指令: dropdown.html: <div class='dropdown-container' ng-class='{ show: listVisible }'> <div class='dropdown-display insetShadow' ng-click='show();' ng-class='{ clicked: listVisible }'> <span ng-if='!isPlaceholder'>

我有关于下拉列表的指令: dropdown.html:

<div class='dropdown-container' ng-class='{ show: listVisible }'>
    <div class='dropdown-display insetShadow' ng-click='show();' ng-class='{ clicked: listVisible }'>
        <span ng-if='!isPlaceholder'>{{ display }}</span>
        <span class='placeholder' ng-if='isPlaceholder'>{{ placeholder }}</span>
        <i class='fa fa-angle-down'></i>
    </div>
    <div class='dropdown-list'>
        <div>
            <div ng-repeat='item in list' ng-click='select(item)' ng-class='{ selected: isSelected(item) }'>
                <div>
                    <span>{{property !== undefined ? item[property] : item}}</span>
                    <i class='fa fa-check'></i>
                </div>
            </div>
        </div>
    </div>
</div>
用法:

<dropdown placeholder='' list='actions' selected='' property='title' value='id' style='width:150px;'></dropdown>
不工作(不知道为什么):


工作:

$scope.obj = {};
$scope.obj.savedValue;
<dropdown placeholder='' list='dataList' selected='obj.savedValue' property='title' value='id'></dropdown>
$scope.obj={};
$scope.obj.savedValue;

常见的dot问题。不能修改嵌套范围中的简单字符串。 在plunk中,让我们进行一些修改,添加第二个下拉列表:

<dropdown  ng-repeat="i in [1, 2]" style='width:150px;' placeholder='' list='dataList' selected='savedValue' property='title' value='id'></dropdown>
selected: {{ savedValue }}

所选:{savedValue}
人们期望看到的是两个相连的下拉列表——但这并没有发生。Ng repeat为每个元素创建嵌套作用域,savedValue成功传递给子作用域,但子作用域无法修改它。

因此,您需要使用一些包装器:

<dropdown  ng-repeat="i in [1, 2]" style='width:150px;' placeholder='' list='dataList' selected='o.savedValue' property='title' value='id'></dropdown>
selected: {{ o.savedValue }}

所选:{o.savedValue}
然后它就起作用了:

将您的示例简化到最低限度,您的问题是什么?抱歉,抛出50行代码并说您的指令“不起作用”对我来说毫无意义。当我在其他指令中使用时,当我在“选定”中使用范围变量保存选择时,它不起作用。我在此处复制了您的代码:什么不起作用?您能在Plunker中复制它吗?对人们来说帮助会容易得多。对未来有用。我会记得的。但这不是问题,作用域变量发生变化,我在{{}操作符上显示它,但无法捕捉$scope。$watch=>不工作,不知道为什么。若我按照建议使用对象包装器,那个么它是可以工作的,但我想弄清楚为什么并没有包装器对象就不能工作。
$scope.obj = {};
$scope.obj.savedValue;
<dropdown placeholder='' list='dataList' selected='obj.savedValue' property='title' value='id'></dropdown>
<dropdown  ng-repeat="i in [1, 2]" style='width:150px;' placeholder='' list='dataList' selected='savedValue' property='title' value='id'></dropdown>
selected: {{ savedValue }}
<dropdown  ng-repeat="i in [1, 2]" style='width:150px;' placeholder='' list='dataList' selected='o.savedValue' property='title' value='id'></dropdown>
selected: {{ o.savedValue }}