如何用角度分离UI与控制器?

时间:2014-01-22 02:04:01

标签: angularjs code-separation

我正在开发有角度的网络应用程序,我怀疑是否可以将UI与控制器分开绝对干净?

我有一个控制器方法,它向服务器发送请求以检索数据。如果发生了一些错误,我需要通过一些友好的消息通知用户。 所以我想我必须调用UI框架的某些api来通过弹出窗口或某种吐司通知用户。但这样做,并不意味着我将UI代码嵌入到我的控制器逻辑中?这与UI和控制器之间的清晰分离是否相反? 如果我想切换到另一个UI框架,这意味着我还需要改变我的控制器代码。

我是网络应用的新手,希望有人能澄清我的怀疑。 你会做什么?

1 个答案:

答案 0 :(得分:1)

  

我有一个控制器方法,它向服务器发送请求以检索数据。如果发生了一些错误,我需要通过一些友好的消息通知用户。所以我想我必须调用UI框架的某些api

您不一定需要这样做。在您的UI中,您可以使用HTML(UI代码)向用户显示问题。使用ng-if,此UI代码对用户隐藏。如果控制器检测到负载故障,则可以在控制器上设置将执行以下操作的值

  • 导致UI代码显示
  • (可选)在UI代码中设置显示信息

<div ng-if="displayError">{{errorMsg}}</div>

然后,在你的控制器中,像这样:

MyService.getData().then(
    function(responseData) {

        $scope.goodData = responseData;
    },

    function(failure) {

        $scope.displayError = true;
        $scope.errorMsg = "Failed to Retrieve Data"

    }
);