Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Angularjs 角度模态未更新结果中的$scope_Angularjs_Coffeescript_Modal Dialog - Fatal编程技术网

Angularjs 角度模态未更新结果中的$scope

Angularjs 角度模态未更新结果中的$scope,angularjs,coffeescript,modal-dialog,Angularjs,Coffeescript,Modal Dialog,我试图在Angular中实现一个模式窗口,以提示用户输入,我在以前的应用程序中使用了几乎相同的代码,它起了作用,我真的不知道这里发生了什么 以下是打开模式的控制器(在Coffee脚本中): 现在,模态实例控制器: .controller('addStreamModalInstance', [ '$scope', '$modalInstance', '$http', 'public_key' ($scope, $modalInstance, $http, public_key) -

我试图在Angular中实现一个模式窗口,以提示用户输入,我在以前的应用程序中使用了几乎相同的代码,它起了作用,我真的不知道这里发生了什么

以下是打开模式的控制器(在Coffee脚本中):

现在,模态实例控制器:

.controller('addStreamModalInstance', [
    '$scope', '$modalInstance', '$http', 'public_key'
    ($scope, $modalInstance, $http, public_key) ->
        console.log(public_key)
        $scope.public_key = public_key
        $scope.ok = ->
            console.log($scope.public_key)
            $modalInstance.close $scope
            return
        $scope.cancel = ->
            $modalInstance.dismiss "cancel"
            return
        return
])
以及HTML:

<div class="modal-header">
    <h4>Please enter the private key for verification {{public_key}}</h4>
</div>
<div class="modal-body">
    <div class="form-group">
        <input type="text" class="form-control" id="exampleInputEmail1" ng-model="public_key">
    </div>
</div>
<div class="modal-footer">
    <button class="btn btn-primary" ng-click="ok()">OK</button>
    <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>

请输入用于验证的私钥{{public_key}
好啊
取消

因此,我点击一个按钮,模态打开,文本框中有“占位符”,我还可以看到这个绑定到模态标题的测试。当我在框中结束文本时,由于绑定,标题将继续按预期更新,但是当我单击“确定”时,$scope.public_键似乎恢复为“占位符”。试图找出原因。

当您在
addStreamModalInstance
控制器中设置值时,您的工作范围与
addStreamModal不同。
要使用
addStreamModalInstance
中设置的值更新
addStreamModalInstance
的范围,您可以返回所选值(您通过返回$scope来执行此操作)并在.then调用您的
addStreamModal
控制器中分配它

您的
addStreamModal
将类似于(对不起,我的咖啡脚本不太好):


好的,我现在开始工作了,我回到angular示例,测试了它,然后慢慢地根据我的需要调整它,下面是代码:

.controller "addStreamModal", ($scope, $modal, $http, $log) ->
    $scope.public_key = ""
    $scope.open = ->
        modalInstance = $modal.open(
            templateUrl: "addStream.html"
            controller: "addStreamModalInstance"
            resolve:
                public_key: ->
                    $scope.public_key
        )
        modalInstance.result.then ((public_key) ->
            console.log(public_key)
            return
        ), ->
            $log.info "Modal dismissed at: " + new Date()
            return
        return
    return
例如:

.controller "addStreamModalInstance", ($scope, $modalInstance, public_key) ->
    $scope.editable = public_key: public_key
    $scope.ok = ->
        $modalInstance.close $scope.editable.public_key
        return

    $scope.cancel = ->
        $modalInstance.dismiss "cancel"
        return
    return
HTML:


我是模态的!
好啊
取消

因此,我认为区别在于我将公钥嵌套到实例控制器中的.editable对象中。我不完全理解为什么这样做,但我很高兴这样做。

哪个作用域恢复为公钥?addStreamModal还是addStreamModalInstance?嗯,您不需要将模式回调的结果分配给scop吗父控制器“addStreamModal”中的e变量?从未编写过一行cs,但您没有使用“result”执行任何操作看起来很奇怪。如果我错了,请告诉我。是的,这看起来不那么奇怪:)不幸的是,这对我不起作用。然而,我确实找到了一个解决方案,并发布了。这在什么方面不起作用?第二次打开模式窗口时,我希望您会看到第一次输入的文本。(例如,打开模式、编辑键、关闭模式、重新打开模式,您应该会看到您第一次输入的值)。概念和方法与我发布的基本相同。让我们试着理解“为什么”,这样这篇文章可以帮助其他人。
.controller "addStreamModal", ($scope, $modal, $http, $log) ->
    $scope.public_key = ""
    $scope.open = ->
        modalInstance = $modal.open(
            templateUrl: "addStream.html"
            controller: "addStreamModalInstance"
            resolve:
                public_key: ->
                    $scope.public_key
        )
        modalInstance.result.then ((public_key) ->
            console.log(public_key)
            return
        ), ->
            $log.info "Modal dismissed at: " + new Date()
            return
        return
    return
.controller "addStreamModalInstance", ($scope, $modalInstance, public_key) ->
    $scope.editable = public_key: public_key
    $scope.ok = ->
        $modalInstance.close $scope.editable.public_key
        return

    $scope.cancel = ->
        $modalInstance.dismiss "cancel"
        return
    return
<div class="modal-header">
    <h3 class="modal-title">I'm a modal!</h3>
</div>
<div class="modal-body">
    <input type="text" name="input" class="form-control" ng-model="editable.public_key">
</div>
<div class="modal-footer">
    <button class="btn btn-primary" ng-click="ok()">OK</button>
    <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>