$范围问题。 HTML视图中未显示更改

时间:2016-07-12 07:12:12

标签: javascript angularjs scope jstree

伙计们我是Angular的新手,我遇到了一些问题:

现在我正在使用ngJsTree,而我正在覆盖“selectNodeCB”方法,当您从树中选择一个节点时,该方法会执行某些操作。在我的控制器中看起来像这样:

$scope.test = "Hellow World"
...
function selectNodeCB(event, data) {
        debugger;
        $scope.test = "Goodbye World";

}

现在,当我在UI中选择一个节点时,我们就停在调试器上。 $ scope.test改为“Goodbye World”,仅此而已。方法完成后,不会向UI显示任何更改(HTLM vieiw)。

我认为这与“selectNodeCB”函数的无$范围有关,因为当我这样做时:

$scope.testFnc = function () {
        $scope.test = "Goodbye World";
};

然后我点击某个按钮就可以完美地工作了。此外,我尝试从它执行的“selectNodeCB”调用“testFnc”,但HTML中没有任何更改。

我确信我正在伪造一些非常明显的东西,所以如果有人能给我一个小费,我会非常高兴。

1 个答案:

答案 0 :(得分:0)

好的ppl我发现它在HTML视图中是一个问题:

update product set product_name='$name', product_price='$price', 
product_quantity='$quantity', product_description='$desc', where productid='$id'
-->
update product set product_name='$name', product_price='$price', 
product_quantity='$quantity', product_description='$desc' where productid='$id'

现在的解决方案是:如果{{test}}在容器外面

replace(ltrim(replace(@str, '0', ' ')), ' ', '0')

它不起作用。如果你把{{test}}放在里面:

            <div class="portlet-body">
                <div class="container" ng-controller="EditPrizeTableCtrl as vm">
                    <div class="row" cg-busy="vm.promise">
                        <toaster-container></toaster-container>
                        <div class="col-xs-6">
                            <div class="panel-body">
                                <div id="ptTree" js-tree="treeConfig" should-apply="ac()" ng-model="treeData"
                                     tree="treeInstance" tree-events="ready:readyCB;select_node:selectNodeCB"></div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            ......
            <div> {{test}} </div>

工作正常。但这不是一般解决方案。因此,您可以不将变量设为“vm”,只需在容器中使用“EditPrizeTableCtrl”:

<div class="container" ng-controller="EditPrizeTableCtrl as vm"> ... </div>

这种方式很完美!